• ActiveX控件


      
    什么是ActiveX控件:一个进程内服务器,支持多种的COM接口。(可以理解为,一个COM接口是一个纯抽象基类,你实现了它,并且它支持自注册,就是一个ActiveX控件了
    可以把ActiveX控件看做是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。

    容器应用程序是可以嵌入或链接对象的应用程序。

    服务器应用程序是创建对象并且当对象被双击时,可以被启动的应用程序。

      我们常用的word就是一个容器应用程序,例如,若在word文档中可以嵌入或链接一个Excel表格对象,则这时的word就是服务器应用程序。 在双击word文档中嵌入或链接的这个Excel表格对象后,将启动Excel程序来完成对这个表格的编辑工作。Excel就是拥有这个表格对象的服务器应用程序,而word程序则是可以容纳这个表格对象的容器应用程序。另外,我们也可以在word文档中嵌入或链接一个 word文档对象,因此对word来说,它不仅仅只是一个容器应用程序,同时它也是一个服务器应用程序。

      ocx是ActiveX控件文件的一种后缀名,但应该注意的是,ActiveX控件对应的文件也可以是其他后缀名,例如DLL 。

      一个典型的ActiveX控件有三种特性:方法、属性、事件

    控件的宿主程序应该就是appWizard里可选择的三种类型,DLL,EXE,Service就是一什么形式发布。
    自注册:向注册表中添加一系列注册表项和值的过程。(都是在HKEY_CLASSES_ROOT里)
    属性页:属性页是控件的一个重要的功能。(实现属性页有明显的好处,试想在MFC里设计一个控件的属性时属性页多么的方便)属性页也是一个COM组件,由容器应用程序单独实例化。
    属性的持续性:容器中的每个控件都有自己的属性值,如果容器关闭后还想维持属性的状态值,则这个控件要支持持续性。目前用于属性持续性的主要接口有:IPersistStream, IPersistStreamInit, IPersistPropertyBag三个。
    控件容器有2种模式:设计时模式和运行时模式。它也是一个基于COM的组件。
     
    (目前,ATL是写ActiveX控件的首选开发工具,开发任何COM应用都是如此)
     
    可通过ActiveX控件的属性、事件和方法与ActiveX控件进行交互:
     1:属性是指与控件相关的特性。
     2:事件是由控件向容器传递的通知信息。
     3:方法是指可通过IDispatch使用控件的一类函数。
    属性
    属性是由ActiveX控件和控件所在的客户端展示提供的。共有四种基本属性:
    1、Ambient属性是由容器向控件提供的。为了适应需要,控件必须使用这些属性。常用的ambient属性有容器的背景颜色、默认字体以及前景色等。
    2、extended属性是由容器实现的,但看起来是由控件生成的。例如,容器中各种各样控件的制表顺序便属于extended属性。
    3、stock属性是由ActiveX控件开发工具实现的控件属性。Stock属性的例子有控件的字体、标题文本和前景色及背景色等。
    4、custom属性是由用户实现的控件属性。
    事件
    事件是用于向控件的容器发送通知信息的。例如当点击鼠标或发生其他事件时,控件用事件通知容器。共有两种基本类型的事件:
    1、 stock事件是由ActiveX控件开发工具实现的,可以像调用fireError等函数那样调用stock事件。
    2、 custom事件是由用户实现的,尽管在实现过程中MFC和ATL类库以及Visual C++做了大量的工作。
    方法
    由ActiveX控件实现的方法类似于自动化中所述的自动化实现的方法。实际上,方法主要是使用IDispatch接口通过自动化来实现的。
    用MFC构件的ActiveX控件总是通过IDispatch来提供它的方法,而用ATL构建的控件为了提供组件的方法,既可以使用双工接口,也可以使用定制接口。
  • 相关阅读:
    搭建DG(data guard),及搭建过程中遇到的一些小问题 高伟
    介绍linux下vi命令的使用
    linux gcc编译器使用
    Linux进程编程介绍
    事件与接口实例讲解 C#
    Linux 2.6内核的编译步骤及模块的动态加载
    C# 各种定时器比较 zz
    linux下增加系统调用
    VirtualBox共享文件夹
    C++程序的单元测试(转贴)
  • 原文地址:https://www.cnblogs.com/prayer521/p/4175049.html
Copyright © 2020-2023  润新知