將連接點加入物件
ATL 教學課程 示範如何建立支援連接點的控制項、如何新增事件,以及如何實作連接點。 ATL 會實作 I連線ionPointImpl 類別的連接 點。
若要實作連接點,您有兩個選項:
將連接點新增至控制項或物件,以實作您自己的傳出事件來源。
重複使用在另一個類型程式庫中定義的連接點介面。
不論是哪一種情況,「實作連線點精靈」都會使用類型庫來執行其工作。
將連接點加入至控制項或物件
在 .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。
在專案的 .idl 檔案中,將 dispinterface 新增為
[default,source]
coclass 中的 物件介面。 同樣地,如果您在建立控制項時啟用連接點的支援,ATL 控制項精靈將會建立[default,source
] 專案。 若要手動新增這個專案,請以粗體新增這一行:coclass Buddy { [default] interface IBuddy; [default,source] dispinterface DBuddyEvents; };
如需範例,請參閱 Circ ATL 範例中的 .idl 檔案。
使用 [類別檢視] 將方法和屬性新增至事件介面。 以滑鼠右鍵按一下 [類別檢視] 中的類別,指向 快捷方式功能表上的 [新增 ],然後按一下 [ 新增連線點 ]。
在 [實作連線點精靈] 的 [ 來源介面 ] 清單方塊中,選取 [專案介面 ]。 如果您選擇控制項的介面,然後按 [確定 ],您將:
使用事件 Proxy 類別產生標頭檔,該類別會實作將呼叫事件的傳出程式碼。
將專案新增至連接點對應。
您也會看到電腦上所有類型程式庫的清單。 如果您想要實作在另一個類型程式庫中找到完全相同的傳出介面,您應該只使用這些其他類型程式庫的其中一個來定義連接點。
重複使用在另一個類型程式庫中定義的連接點介面
在 [類別檢視] 中,以滑鼠右鍵按一下實作 BEGIN_COM_MAP宏的 類別,指向 快捷方式功能表上的 [新增],然後按一下 [ 新增 連線點 ]。
在 [實作連線點精靈] 中,選取型別程式庫和類型程式庫中的介面,然後按一下 [ 新增 ]。
將 .idl 檔案編輯為下列其中一項:
從使用事件來源之物件的 .idl 檔案複製 dispinterface。
在該 類型程式庫上使用 importlib 指令。