ActiveX 控件

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

COM

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

可连接对象

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

统一数据传输

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

复合文档

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

属性页

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

OLE 自动化

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

持久存储

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

字体和图片对象

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

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

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

注意

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

 

有关详细信息,请参阅以下主题:

ActiveX 控件和控制容器准则