ATLEventHandling 範例:使用 IDispEventImpl 和 IDispEventSimpleImpl 處理 Word 事件
更新:2007 年 11 月
ATLEventHandling 範例會示範使用 IDispEventImpl 和 IDispEventSimpleImpl 來處理 Microsoft Word 所引發的事件。
本範例由 ATL 專案所組成,其中包含兩個 COM 類別:CSimple 和 CNotSoSimple。這些類別表示會顯示一個訊息方塊以回應 Micrososft Word 所引發之文件變更事件的 COM 物件。CSimple 顯示如何使用 ATL 的 IDispEventSimpleImpl 類別樣板 (Template) 來處理事件,而 CNotSoSimple 顯示如何使用 ATL 的 IDispEventImpl 類別樣板來處理事件。這兩個類別中的程式碼除了使用不同 ATL 樣板所造成的差異外,其他部分都完全相同。
安全性注意事項: |
---|
這個程式碼範例僅供概念說明之用,同時因為範例中的程式碼撰寫並沒有周全的顧及所有安全性問題,所以本範例不適用於實際執行的應用程式或網站中。如果使用者擅自將範例程式碼用於其他意圖而導致連帶事件或重大損害時,Microsoft 將不承擔任何責任。 |
若要取得範例和指示以便進行安裝:
按一下 Visual Studio [說明] 功能表上的 [範例]。
如需詳細資訊,請參閱尋找範例檔案。
最新版的完整範例清單可從 Visual Studio 2008 範例網頁 (英文) 取得。
您也可以將範例置於電腦硬碟中。根據預設,範例和讀我檔案都會複製到 \Program Files\Visual Studio 9.0\Samples\ 下的資料夾中。對於所有的 Visual Studio Express 版,所有範例都可在線上找到。
建置和執行範例
注意事項: |
---|
這個範例必須安裝 Microsoft Office 2000。如果您需要在其他版本的 Microsoft Office 使用此範例,則必須指定位於 ATLEventHandling 目錄下 StdAfx.h 中所參考的 mso dll 檔案路徑。例如,Office 2000 使用 mso9.dll,而 Office XP 使用 mso.dll。 |
若要建置和執行這個範例
開啟 ATLEventHandling.sln 方案檔。
如果您使用的是 Excel 2000,請將 StdAfx.h 中的下列程式碼:
#define OFFICE_VER OFFICEXP
修改為:
#define OFFICE_VER OFFICE2000
在 [建置] 功能表中,按一下 [建置方案]。
執行 MFCClient.exe。
您會看到一個具有下拉式清單的對話方塊,讓您可以使用 IDispEventImpl 或 IDispEventSimpleImpl 來執行測試。從這些項目中選取一項,然後再按一下 [Start] 按鈕。如果您電腦上有安裝 Microsoft Word,將會載入一個新執行個體,而且測試元件將開始接收每當現用文件變更時由 Word 發送的事件。
您可以使用 Word 的 [視窗] 功能表來建立新文件、載入文件或切換至另一個文件,以觸發 (Trigger) 事件。每當文件變更時,將顯示一個訊息方塊,指示是哪一個元件接收到事件和新的現用文件的名稱。您可以使用 [MFCClient] 對話方塊上的 [Stop] 按鈕、變更下拉式清單的選取項目或關閉 Word,來中斷事件處理常式和 Word 執行個體的連接。
使用 [確定] 或 [取消] 命令按鈕,或對話方塊的 [關閉] 按鈕來關閉範例應用程式。
關鍵字
本範例使用下列關鍵字:
_ATL_FUNC_INFO, BEGIN_SINK_MAP, END_SINK_MAP, SINK_ENTRY_EX, SINK_ENTRY_INFO, IDispEventImpl, IDispEventSimpleImpl, IDispEventSimpleImpl::DispEventAdvise, IDispEventSimpleImpl::DispEventUnadvise