__event
声明事件。
语法
__event
method-declarator
;
__event __interface interface-specifier;
__event member-declarator;
备注
关键字 __event 可应用于方法声明、接口声明或数据成员声明。但是,不能使用 __event 关键字限定嵌套类的成员。
根据您的事件源和接收器是本机 C++、COM 还是托管 (.NET Framework),您可使用下列构造作为事件:
在事件接收器中使用 __hook 可将处理程序方法与事件方法关联。请注意,使用 __event 关键字创建一个事件之后,将在调用此事件时调用后来挂钩到它的所有事件处理程序。
__event 方法声明不能具有定义;定义是隐式生成的,因此可将事件方法当做任何普通方法一样调用。
System_CAPS_note注意
模板类或结构不能包含事件。
本机事件
本机事件是方法。返回类型通常是 HRESULT 或 void,但可以是任何整型(包括 enum)。当事件使用整数返回类型时,如果事件处理程序返回非零值,则会定义错误条件,在这种情况下,引发的事件将调用其他委托。
// Examples of native C++ events:
__event void OnDblClick();
__event HRESULT OnClick(int* b, char* s);
有关代码示例,请参阅本机 C++ 中的事件处理。
COM 事件
COM 事件是接口。事件源接口中的方法的参数应为 in 参数(但这不是强制要求的),因为 out 参数在多播时无用。如果使用 out 参数,则将发出 1 级警告。
返回类型通常是 HRESULT 或 void,但可以是任何整型(包括 enum)。当事件使用整数返回类型并且事件处理程序返回非零值时,这是错误情况,此时引发的事件将中止对其他委托的调用。请注意,编译器会自动将一个事件源接口标记为生成的 IDL 中的源。
COM 事件源的 __event 之后始终需要 __interface 关键字。
// Example of a COM event:
__event __interface IEvent1;
有关代码示例,请参阅 COM 中的事件处理。











