__unhook
取消与事件的一个处理程序方法。
long __unhook(
&SourceClass::EventMethod,
source,
&ReceiverClass::HandlerMethod
[, receiver = this]
);
long __unhook(
interface,
source
);
long __unhook(
source
);
参数
SourceClass::EventMethod
对展开事件处理程序方法的操作方法的指针:本机 C++ 操作: SourceClass 是事件源类,并 EventMethod 是事件。
COM 事件: SourceClass 是事件源接口,并 EventMethod 是其方法之一。
托管事件: SourceClass 是事件源类,并 EventMethod 是事件。
interface
仅限从 receiver未链接的接口名称, COM event_receiver 属性的 layout_dependent " 参数为 true的事件接收器的。source
传递给事件源的实例的指针。根据代码在 event_receiver指定的 type , 源 可以是下列操作之一:本机事件源对象指针。
IUnknown基于指针 (COM 源)。
托管对象指针 (对于托管事件)。
ReceiverClass::HandlerMethod
将操作将取消的事件处理程序方法的指针。处理程序指定了,则类的方法或为相同的引用;如果不指定类名, __unhook 假定类是它调用的属性。本机 C++ 操作: ReceiverClass 是事件接收器类,并 HandlerMethod 是处理程序。
COM 事件: ReceiverClass 是事件接收器接口,并 HandlerMethod 是其处理程序之一。
托管事件: ReceiverClass 是事件接收器类,并 HandlerMethod 是处理程序。
receiver(可选)
向事件接收器类的实例的指针。如果不指定接收器,默认值为 __unhook 调用的接收器类或结构。
用法
可以是任何功能范围的使用,包括主,事件接收器类之外。
备注
使用内部函数 __unhook 将事件接收器取消或 “展开”从操作方法的一个处理程序方法。
具有 __unhook的三个窗体。可以在许多情况下使用第一个 (四个参数) 窗体。可以为 COM 事件接收器只使用 __unhook 的第二个 (两个参数) 形式;这展开整个事件接口。可以使用的第三个 (一个参数) 窗体展开从指定的源的任何委托。
非零返回值指示发生错误 (托管事件将引发异常)。
如果尚未的挂钩对事件的 __unhook 和事件处理程序,它将不起作用。
在编译时,编译器将验证事件存在并执行检查与指定的处理程序的参数类型。
除了 COM 事件外, __hook 和 __unhook 可以在事件接收器之外调用。
对于使用 __unhook 的替代方法是使用 - = 运算符。
有关代码在新语法中管理事件的信息,请参见 事件 (Visual C++)。
说明 |
---|
模板类或结构不能包含事件。 |
示例
有关示例 处理在本机C++的事件 参见和 处理在COM的事件 。