ActiveX 控件

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

COM

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

可连接对象

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

统一数据传输

控件可以支持在容器中拖放,并从其容器中获取帮助。 有关拖放的详细信息,请参阅 IOleInPlaceObjectWindowless::GetDropTarget

复合文档

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

属性页

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

OLE 自动化

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

持久存储

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

字体和图片对象

控件可以使用这些系统提供的对象在客户端中提供自身的可视表示形式。 字体对象实现多个接口,包括 IFontIFontDisp。 可以使用 OleCreateFontIndirect 创建字体对象。 图片对象还实现多个接口,包括 IPictureIPictureDisp。 可以使用 OleCreatePictureIndirect 创建图片对象,并使用 OleLoadPicture 从流加载。

请务必了解这些功能可用于任何 OLE 对象。 一个不需要实现控件才能使用这些功能。 此外,控件上唯一必需的接口是 IUnknown。 该控件根据需要根据支持相关功能的需求,选择性地支持其他接口。

除了这些功能之外,以下接口和函数还特定于控制技术: IOleControlIOleControlSiteISimpleFrameSiteOleTranslateColor。 此外,还特定于控件是控件或控件容器可以支持的属性和方法的一组标准。

注意

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

 

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

ActiveX控制容器准则