__hook

将处理程序方法与事件。

long __hook(
   &SourceClass::EventMethod,
   source,
   &ReceiverClass::HandlerMethod
   [, receiver = this]
);
long __hook(
   interface,
   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
    对于将要的挂钩事件处理程序方法的指针到事件。 处理程序指定了,则类的方法或为相同的引用;如果不指定类名, __hook 假定类是它调用的属性。

    • 本机 C++ 操作: ReceiverClass 是事件接收器类,并 HandlerMethod 是处理程序。

    • COM 事件: ReceiverClass 是事件接收器接口,并 HandlerMethod 是其处理程序之一。

    • 托管事件: ReceiverClass 是事件接收器类,并 HandlerMethod 是处理程序。

  • receiver(可选)
    向事件接收器类的实例的指针。 如果不指定接收器,默认值为 __hook 调用的接收器类或结构。

用法

可以是任何功能范围的使用,包括主,事件接收器类之外。

备注

使用内部函数 __hook 将事件接收器关联或挂钩处理程序方法具有操作方法。 ,并在源引发该指定的操作时,指定的处理程序将调用。 可以将多个处理程序添加到单个操作或多个事件挂钩到单个处理程序。

具有 __hook的两种形式。 可以为 COM event_receiver 属性的 layout_dependent " 参数为 错误的事件接收器使用在许多情况下第一个 (四个参数) 形式,具体而言,。

在这些情况下不需要在引发事件之前挂钩接口中的所有方法在某个方法;处理事件的只有方法需要挂钩。 可以为 layout_dependent**=true**的 COM 事件接收器只使用 __hook 的第二个 (两个参数) 窗体。

__hook 返回一个长的值。 非零返回值指示发生错误 (托管事件引发异常)。

编译器将检查事件的存在,并且事件签名与委托签名匹配。

除了 COM 事件外, __hook 和 __unhook 可以在事件接收器之外调用。

对于使用 __hook 的替代方法是使用 += 运算符。

有关代码在新语法中管理事件的信息,请参见 事件 (Visual C++)

备注

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

示例

有关示例 处理在本机C++的事件 参见和 处理在COM的事件

请参见

参考

C++关键字

事件处理

event_source

event_receiver

__unhook

__raise