需要的接口 (COM)

下表列出 ActiveX 控件容器接口,并表示哪些接口可选,哪些接口是必需的,必须由控件容器实现。

接口 必需? 注释
IOleClientSite

IAdviseSink

仅当容器需要 (a) 数据更改通知(包含 IDataObject 的控件)、(b) 视图更改通知(未处于活动状态且具有 IViewObjectIViewObject2 的控件)和 (c) 充当标准嵌入对象的控件的其他通知时。
IOleInPlaceSite

IOleControlSite

IOleInPlaceFrame

IOleContainer

请参阅说明 1
环境属性的 IDispatch

请参阅说明 2 和控件的环境属性
控件事件集

查看注释 2
ISimpleFrameSite

ISimpleFrameSite 和嵌套的简单帧支持可选。
IPropertyNotifySink

仅需要以下容器:(a) 拥有自己的属性编辑 UI,每当控件更改属性本身时就需要更新,或者 (b) 想要控制 [requestedit] 属性更改以及其他此类数据绑定功能。
IErrorInfo

如果容器支持双重接口,则是必需的。 请参阅说明 2。
IClassFactory2

强烈建议支持。
  1. IOleContainer 在保存容器站点的文档或窗体对象(或适当的模拟)上实现。 控件使用 IOleContainer 导航到同一文档或窗体中的其他控件。
  2. 对双接口的支持不是强制性的,但强烈建议这样做。 使用提供双重接口支持的控件编写 ActiveX 控件容器以利用双重接口将提供更佳性能。

ActiveX 控件容器必须支持 OLE 自动化异常。 如果控件容器支持双重接口,则必须通过 IErrorInfo 捕获自动化异常。

容器