__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的事件

请参见

参考

C++关键字

event_source

event_receiver

__event

__hook

__raise