ActiveX 控件

ActiveX 控件技术的基础是 COM、可连接对象、复合文档、属性页、OLE 自动化、对象持久性以及系统提供的字体和图片对象。 如下文所述,每种核心技术都会在控件中发挥重要作用。

COM

控件本质上是一个公开 IUnknown 接口的 COM 对象,客户端可以通过该接口获得指向其其他接口的指针。 控件可以通过 IClassFactory2 和自注册来支持许可。 有关 COM、许可和自注册的详细信息,请参阅组件对象模型

可连接对象

控件可以通过可连接对象支持传出接口,这样控件就可以与其客户端进行通信。 例如,传出接口可以触发客户端中的操作,可以通知客户端控件中的某些更改,或者可以在控件执行某些操作之前从客户端请求权限。 有关可连接对象如何工作的详细信息,请参阅 COM 和可连接对象中的事件

统一数据传输

在容器的帮助下,控件可以支持在容器内拖放。 有关拖放的详细信息,请参阅 IOleInPlaceObjectWindowless::GetDropTarget

复合文档

控件可以是可嵌入到包含客户端中的就地活动对象。 最终用户可激活控件,以启动容器应用程序中的操作。 有关就地激活和其他复合文档接口的详细信息,请参阅复合文档

属性页面

控件可以提供属性页面,以便最终用户查看和更改控件的属性。 有关属性页的工作原理的详细信息,请参阅属性页面和属性表

OLE 自动化

控件可以通过 OLE 自动化提供可编程性,这样客户端就可以通过客户端提供的编程语言利用控件的功能。 有关 OLE 自动化的详细信息,请参阅“OLE 自动化”部分。

持久存储

控件可以实现多个持久化接口中的一个或多个,以支持其状态的持久性化。 控件实现者必须确定哪种持久性最重要,并实现相应的持久性接口。 客户端将决定使用哪个接口。 有关所有持久性接口的详细信息,请参阅组件对象模型

字体和图片对象

控件可以使用这些系统提供的对象,在客户端中提供自己的可视化表示。 字体对象实现多个接口,包括 IFontIFontDisp。 字体对象可通过 OleCreateFontIndirect 来创建。 图片对象还会实现多个接口,包括 IPictureIPictureDisp。 图片对象可以使用 OleCreatePictureIndirect 来创建,也可以使用 OleLoadPicture 从数据流中加载。

务必要知道,这些功能可用于任何 OLE 对象。 无需执行的控件才能使用这些功能。 此外,控件上唯一需要的接口是 IUnknown。 根据支持相关功能的需要,控件可选择支持其他接口。

除这些功能外,以下接口和功能也是控件技术所特有的:IOleControlIOleControlSiteISimpleFrameSiteOleTranslateColor。 控件或控件容器可支持的属性和方法的一系列标准也是控件所特有的。

注意

系统库 OleAut32. dll 包含函数的实现(OleCreatePropertyFrameOleCreatePropertyFrameIndirectOleCreateFontIndirectOleCreatePictureIndirectOleLoadPictureOleTranslateColor)。 此外,OleAut32.dll 还包含标准字体和图片对象的实现,以及用于控件的所有接口和附加数据结构和数据类型的类型库。

 

有关详情,请参阅以下主题:

ActiveX 控件和控件容器准则