必要的介面 (COM)
下表列出 ActiveX 控制件容器介面,並表示哪些介面是選擇性的,哪些是強制性的,而且必須由控件容器實作。
介面 | 是必要的嗎? | 註解 |
---|---|---|
IOleClientSite |
Yes |
|
IAdviseSink |
No |
只有當容器需要 (a) 資料變更通知時(具有 IDataObject 的控件)、(b) 檢視變更通知(未使用中且具有 IViewObject 或 IViewObject2 的控件),以及 (c) 做為標準內嵌物件的控件的其他通知。 |
IOleInPlaceSite |
Yes |
|
IOleControlSite |
Yes |
|
IOleInPlaceFrame |
Yes |
|
IOleContainer |
Yes |
請參閱附注 1 |
環境屬性的 IDispatch |
Yes |
請參閱附注 2 和 控件的環境屬性 |
控制事件集 |
Yes |
請參閱附注 2 |
ISimpleFrameSite |
No |
ISimpleFrameSite 和支援巢狀簡單框架是選擇性的。 |
IPropertyNotifySink |
No |
只有當控件變更屬性本身或 (b) 想要控制 [requestedit] 屬性變更和其他這類數據系結功能時,才需要更新 (a) 擁有自己的屬性編輯 UI 的容器。 |
IErrorInfo |
Yes |
如果容器支援雙重介面,則為必要。 請參閱附注 2。 |
IClassFactory2 |
No |
強烈建議支援。 |
- IOleContainer 是在保存容器網站的檔或窗體對象上實作的(或適當的類比)。 控制項會使用 IOleContainer 瀏覽至相同檔或表單中的其他控制項。
- 對雙重介面的支持並非必要,但強烈建議使用。 撰寫 ActiveX 控制件容器以利用雙重介面,可透過提供雙重介面支援的控制項提供更佳的效能。
ActiveX 控件容器必須支援 OLE 自動化例外狀況。 如果控件容器支援雙重介面,則必須透過 IErrorInfo 擷取自動化例外狀況。