DispSink 範例:透過分派介面處理從單一 COM 伺服器引發的事件
更新:2007 年 11 月
DispSink 範例示範擁有自己的雙重介面 (Dual Interface) 和用來引發事件的分派介面 (Dispatch Interface) 的單一伺服器物件 (只能有一個執行個體的物件)。
DispSink 屬性範例是本範例使用屬性的版本。
安全性注意事項: |
---|
這個程式碼範例僅供概念說明之用,同時因為範例中的程式碼撰寫並沒有周全的顧及所有安全性問題,所以本範例不適用於實際執行的應用程式或網站中。如果使用者擅自將範例程式碼用於其他意圖而導致連帶事件或重大損害時,Microsoft 將不承擔任何責任。 |
若要取得範例和指示以便進行安裝:
按一下 Visual Studio [說明] 功能表上的 [範例]。
如需詳細資訊,請參閱尋找範例檔案。
最新版的完整範例清單可從 Visual Studio 2008 範例網頁 (英文) 取得。
您也可以將範例置於電腦硬碟中。根據預設,範例和讀我檔案都會複製到 \Program Files\Visual Studio 9.0\Samples\ 下的資料夾中。對於所有的 Visual Studio Express 版,所有範例都可在線上找到。
建置和執行範例
若要建置和執行這個範例
開啟 DispSink.sln 方案檔。
在 [建置] 功能表中,按一下 [建置方案]。
開啟 ActiveX 控制項測試容器的兩個或兩個以上的執行個體,然後將 DispCtl 用戶端控制項插入至每個執行個體。如需測試容器 (Test Container) 存取方法的詳細資訊,請參閱以測試容器測試屬性和事件。
在所有的控制項上叫用 Connect 方法。
在其中一個控制項上叫用 Send 方法。將 [叫用方法] 對話方塊的 [參數型別] 欄位變更為 VT_BSTR,然後在 [參數值] 方塊裡輸入任何字串。按一下 Invoke 按鈕。字串會顯示在所有連接控制項的中央。
刪除之前,在所有的控制項上叫用 Disconnect 方法。
範例如何操作
伺服器是擁有自己的雙重介面以及用來引發事件的分派介面的單一物件。伺服端物件經由它的雙重介面 Send 方法接收資料並且經由分派介面上的 Transfer 事件傳輸至所有連接元件。
用戶端是包含伺服端物件的 ActiveX 控制項。控制項會回應由伺服端物件引發的 Transfer 事件。它有一個擁有 Connect、Send 和 Disconnect 方法的雙重介面。如果 Transfer 事件是一個包含 BSTR 的變數所引發的,則該字串將顯示在控制項的中央。
關鍵字
本範例使用下列關鍵字:
#import; CComAutoThreadModule; CComSimpleThreadAllocator; CoCreateInstance; DECLARE_CLASSFACTORY_AUTO_THREAD(); FireViewChange