event_receiver 属性

创建事件接收器(接收器)。

注意

本机 C++ 中的事件特性与标准 C++ 不兼容。 指定 /permissive- 一致性模式时,它们不会编译。

语法

[ event_receiver(type
   [, layout_dependent=false]) ]

参数

type
以下值之一的枚举:

  • native,用于非托管 C/C++ 代码(本机类的默认值)。

  • com ,用于 COM 代码。 此值需要包含这些头文件:

    #define _ATL_ATTRIBUTES
    #include <atlbase.h>
    #include <atlcom.h>
    

layout_dependent
仅当 type=com 时指定 layout_dependentlayout_dependent 是布尔值:

  • true 表示事件接收器中委托的签名必须与事件源中已挂钩的委托签名完全匹配。 事件接收器处理程序名称必须与相关事件源接口中指定的名称匹配。 当 layout_dependenttrue 时,使用 coclass。 指定 true 效率略高。

  • false(默认)表示调用约定和存储类(virtualstatic 和其他)不必匹配事件方法和处理程序。 处理程序名称也不需要与事件源接口方法名称匹配。

备注

event_receiver C++ 属性指定应用它的类或结构将是事件接收器,使用 Microsoft C++ 统一事件模型。

event_receiverevent_source 属性以及 __hook__unhook 关键字一起使用。 使用 event_source 创建事件源。 在事件接收器的方法中使用 __hook,将(“挂钩”)事件接收器方法与事件源的事件相关联。 使用 __unhook 取消关联它们。

layout_dependent 仅适用于 COM 事件接收器 (type=com)。 layout_dependent 的默认值是 false

注意

模板化的类或结构不能包含事件。

要求

特性上下文
适用于 classstruct
可重复
必需的特性 如果为 layout_dependent=true,则为 coclass
无效的特性

有关详细信息,请参见特性上下文

另请参阅

编译器特性
event_source
__event
__hook
__unhook
类特性