ATL 支持ActiveX控件開發的所實現的接口

如果你所開發的控件需要提供一個可視化界面,並需要通過鼠標點擊或類似的方式與用戶實現交互,則它必須支持基本的OLE文檔接口:IoleObject、IOleInPlace、IoleInPlaceActiveObject、IdataObject以及IviewObject2。下表將對這些接口進行了簡要的介紹

 

接口

說明

IoleObject

IoleObject提供了OLE文檔架構的基本內容。通過該接口,容器和組件相互協商被嵌入對象(在這裏指的是一個控件)的大小,並可以獲取控件的MiscStatus位

IoleInPlaceObject

一個控件必須實現IoleInPlaceObject來支持在容器中實現在位激活和失效。該接口還提供了一個方法,用於通知控件,它的大小已經改變或已經在容器中刪除。

IoleInPlaceActiveObject

一個控件必須實現IoleInPlaceActiveObject,以便對在控件中使用和轉換加速鍵提供支持。IoleInPlaceActiveObject的打部分方法對於ActiveX控件是不需要的。

IoleControl

IoleControl是爲支持ActiveX控件而加入的一個新的接口。它所提供的方法使得與控件的交互得到了加強。IoleControl的主要功能是允許控件和容器在處理鍵盤輸入時能夠很好的協調工作。

IDataObject

控件實現該接口主要用於爲容器提供圖形繪製功能。IdataObject還提供了一個屬性,用於對它的屬性持續性進行設置。

IviewObject2

當一個控件提供一個可視的外觀需要提供IviewObject2.該接口爲容器提供各種方法,允許容器通過這些方法請求控件在容器的客戶區重繪控件本身。

 


屬性頁接口

 

接口

說明

IspecifyPropertyPage

控件通過實現該接口,可以向空氣提供它的相關屬性頁的一個列表。GetPages方法返回CLSID的一個數組,其中每個CLSID對應一個屬性頁。

IpropertyPageSite

IpropertyPageSite使得屬性頁組件與容器實現的屬性單框架之間的通信變得更加容易。在屬性頁通過IpropertyPageSite::SetPageSite指針。屬性頁可以使用OnStatusChange方法來通知應用程序框架,它的一個或多個屬性已被改變。

IpropertyPage2

IpropertyPage2由每一個屬性頁組件實現,併爲容器提供一組方法。使用這些方法,容器可以得到屬性頁窗口的大小,或移動、創建、刪除、激活、失效組件的屬性頁窗口。容器爲每一個屬性頁創建一個框架,並通過這些方法對屬性頁的顯示進行管理。這使得屬性單的顯示以及它的一些行爲如同有應用程序來管理一樣,但實際上,一個屬性頁所包含的每一個組件駐留在一個框架窗口中,但有容器來創建。

 

 持續性接口

 

接口

說明

IpersistStream

IpersistStream爲組件提供了一種簡單的機制來維持它們狀態的持續性。客戶機程序(這裏指容器)通過對其中的一個Ipersist*進行查詢來確定是否支持持續性。並通過IpersistStream::Load和IpersistStream::Save來加載和保存數據。

IpersistStreamInit

IpersistStreamInit可以使控件在初始化時設置它的默認值。爲了支持該功能,在接口中添加了一個新的方法:InitNew。

IpersistProPertyBag

IpersistProPertyBag以及容器的IproPertyBag提供一個有效地方法用於保存和裝載基於文本的屬性。屬性包持續性(property bag persistence )機制在基於Web的環境中是非常有效的。在這樣的環境中,控件的屬性信息必須存儲在HTML文檔中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章