需要的接口 (COM)
下表列出 ActiveX 控件容器接口,并表示哪些接口可选,哪些接口是必需的,必须由控件容器实现。
接口 | 必需? | 注释 |
---|---|---|
IOleClientSite |
是 |
|
IAdviseSink |
否 |
仅当容器需要 (a) 数据更改通知(包含 IDataObject 的控件)、(b) 视图更改通知(未处于活动状态且具有 IViewObject 或 IViewObject2 的控件)和 (c) 充当标准嵌入对象的控件的其他通知时。 |
IOleInPlaceSite |
是 |
|
IOleControlSite |
是 |
|
IOleInPlaceFrame |
是 |
|
IOleContainer |
是 |
请参阅说明 1 |
环境属性的 IDispatch |
是 |
请参阅说明 2 和控件的环境属性 |
控件事件集 |
是 |
查看注释 2 |
ISimpleFrameSite |
否 |
ISimpleFrameSite 和嵌套的简单帧支持可选。 |
IPropertyNotifySink |
否 |
仅需要以下容器:(a) 拥有自己的属性编辑 UI,每当控件更改属性本身时就需要更新,或者 (b) 想要控制 [requestedit] 属性更改以及其他此类数据绑定功能。 |
IErrorInfo |
是 |
如果容器支持双重接口,则是必需的。 请参阅说明 2。 |
IClassFactory2 |
否 |
强烈建议支持。 |
- IOleContainer 在保存容器站点的文档或窗体对象(或适当的模拟)上实现。 控件使用 IOleContainer 导航到同一文档或窗体中的其他控件。
- 对双接口的支持不是强制性的,但强烈建议这样做。 使用提供双重接口支持的控件编写 ActiveX 控件容器以利用双重接口将提供更佳性能。
ActiveX 控件容器必须支持 OLE 自动化异常。 如果控件容器支持双重接口,则必须通过 IErrorInfo 捕获自动化异常。