ATLEventHandling 示例:使用 IDispEventImpl 和 IDispEventSimpleImpl 处理 Word 事件

更新:2007 年 11 月

ATLEventHandling 示例说明如何使用 IDispEventImplIDispEventSimpleImpl 处理由 Microsoft Word 激发的事件。

该示例由一个 ATL 项目组成,该项目包括两个 COM 类:CSimple 和 CNotSoSimple。这些类表示 COM 对象,COM 对象显示消息框以响应 Microsoft Word 激发的文档更改事件。CSimple 展示如何使用 ATL 的 IDispEventSimpleImpl 类模板处理事件,而 CNotSoSimple 展示如何使用 ATL 的 IDispEventImpl 类模板处理事件。除了使用不同的 ATL 模板所导致的差异以外,这两个类中的代码相同。

安全说明:

提供该示例代码是为了阐释一个概念,并不代表着最安全的编码实践,因此不应在应用程序或网站中使用该示例代码。对于超出本示例代码的预期用途以外的使用所造成的偶然或继发性损失,Microsoft 不承担任何责任。

获取示例和安装示例的说明:

  • 在 Visual Studio 的“帮助”菜单上,单击“示例”。

    有关更多信息,请参见定位示例文件

  • 示例的最新版本和完整列表可以从 Visual Studio 2008 Samples page(Visual Studio 2008 示例页面)联机获取。

  • 还可以在计算机的硬盘上查找示例。默认情况下,示例和自述文件将复制到 \Program Files\Visual Studio 9.0\Samples\ 下的文件夹中。对于 Visual Studio 速成版,所有示例都位于联机位置。

生成并运行示例

说明:

此示例要求安装 Microsoft Office 2000。如果要对其他版本的 Microsoft Office 使用此示例,必须在 ATLEventHandling 目录下指定在 StdAfx.h 文件中所引用的 mso dll 文件的路径。例如,Office 2000 使用 mso9.dll,而 Office XP 使用 mso.dll。

生成并运行此示例

  1. 打开解决方案文件 ATLEventHandling.sln。

  2. 如果您使用的是 Excel 2000,请在 StdAfx.h 中将下面这行代码:

    #define OFFICE_VER OFFICEXP
    

    更改为:

    #define OFFICE_VER OFFICE2000
    
  3. 在“生成”菜单中,单击“生成解决方案”。

  4. 运行 MFCClient.exe。

您将看见一个带有下拉列表的对话框,该对话框允许运行使用 IDispEventImplIDispEventSimpleImpl 的测试。选择这些项中的一项,然后单击“开始”按钮。如果计算机上安装了 Microsoft Word,则每当活动文档更改时,都将加载一个新实例,且测试组件将开始接收 Word 发送的事件。

可以通过创建新文档、加载文档或使用 Word 的“窗口”菜单切换到另一个文档来触发事件。每当文档更改时,就会显示一个消息框,它指示哪个组件正在接收事件及新活动文档的名称。可以通过以下方法将事件处理程序同 Word 的实例断开:使用“MFCClient”对话框中的 Stop 按钮,更改下拉列表的所选内容或关闭 Word。

使用“确定”或“取消”命令按钮或者对话框的“关闭”按钮来关闭该示例应用程序。

关键字

此示例使用以下关键字:

_ATL_FUNC_INFO、BEGIN_SINK_MAP、END_SINK_MAP、SINK_ENTRY_EX、SINK_ENTRY_INFO、IDispEventImpl、IDispEventSimpleImpl、IDispEventSimpleImpl::DispEventAdvise、IDispEventSimpleImpl::DispEventUnadvise

请参见

其他资源

ATL 示例