ATL 教學課程示範如何建立支持連接點的控件、如何新增事件,以及如何實作連接點。 ATL 使用 IConnectionPointImpl 類別實現連接點。
若要實作連接點,您有兩個選項:
- 將連接點新增至控件或物件,以實作您自己的傳出事件來源。
- 重複使用在另一個類型連結庫中定義的連接點介面。
不論是哪一種情況,「 實作連接點精靈 」都會使用類型連結庫來執行其工作。
將連接點新增至控件或物件
在
.idl檔案的庫區中定義一個 dispinterface。 如果您在使用 ATL 控制精靈建立控制項時啟用了連接點支援,則 dispinterface 已經建立。 如果您在建立控件時未啟用連接點的支援,則必須手動將dispinterface新增至.idl檔案。 以下是 dispinterface 的範例。 傳出介面不需要分派介面,但許多腳本語言,例如 VBScript 和 JScript 都需要這樣做,因此此範例會使用兩個 dispinterface:[ uuid(3233E37D-BCC0-4871-B277-48AE6B61224A), helpstring("Buddy Events") ] dispinterface DBuddyEvents { properties: methods: };可以使用
uuidgen.exe或guidgen.exe公用程式來產生 GUID。將 dispinterface 新增為專案
[default,source]檔案中物件 coclass 的.idl介面。 同樣地,如果您在建立控制項時啟用了連接點的支援,ATL 控制項精靈將會建立[default,source]項目。 若要手動新增這個專案,請以粗體新增這一行:coclass Buddy { [default] interface IBuddy; [default,source] dispinterface DBuddyEvents; };使用 [類別檢視 ] 將方法和屬性新增至事件介面。 以滑鼠右鍵按兩下 [類別檢視] 中的類別,指向快捷方式功能表上的 [ 新增 ],然後選取 [ 新增連接點]。
在 [實作連接點精靈] 的 [來源介面] 列表框中,選取 [專案介面]。 如果您選擇控制件的介面,然後選取 [確定],您可以:
- 使用事件 Proxy 類別產生頭檔,該類別會實作將呼叫事件的傳出程序代碼。
- 將專案新增至連接點對應。
您也可以看到您電腦上的所有類型庫清單。 如果您想要實作另一個類型連結庫中找到的完全相同的傳出介面,請只使用這些其他類型連結庫的其中一個來定義連接點。
重用定義在另一個型別函式庫中的連接點介面
在 [類別檢視] 中,以滑鼠右鍵單擊包含
BEGIN_COM_MAP巨集的類別,指向捷徑功能表上的 [新增],然後選取 [新增連接點]。在 [ 實作連接點精靈] 中,選取類型庫和類型連結庫中的介面,然後選取 [ 新增]。
將
.idl檔案編輯為下列其中一項:- 從
.idl使用事件來源的物件檔案複製dispinterface。 - 在該 類型連結庫上使用 importlib 指令。
- 從