Compartir a través de


__hook

Asocia un método controlador a un evento.

long __hook(
   &SourceClass::EventMethod,
   source,
   &ReceiverClass::HandlerMethod
   [, receiver = this]
);
long __hook(
   interface,
   source
);

Parámetros

  • &SourceClassEventMethod::
    Un puntero al método del evento al que se enlace el método de controlador de eventos:

    • Eventos de C++ nativo: SourceClass es la clase del origen de eventos y EventMethod es el evento.

    • eventos COM: SourceClass es la interfaz del origen de eventos y EventMethod es uno de los métodos.

    • eventos administrados: SourceClass es la clase del origen de eventos y EventMethod es el evento.

  • interface
    El nombre de la interfaz que se va a receiver, sólo para los receptores de eventos COM en los que el parámetro layout_dependent de event_receiver es TRUE.

  • source
    Un puntero a una instancia del origen de eventos.Dependiendo del código type especificado en event_receiver, el origen puede ser:

    • Puntero nativo del objeto de origen de eventos.

    • IUnknown- puntero basado (origen COM).

    • Un puntero de objeto administrado (para eventos administrados).

  • &ReceiverClass::HandlerMethod
    Un puntero al método de control de eventos que se enlazará a un evento.El controlador se especifica como un método de una clase o una referencia a la misma; si no se especifica el nombre de clase, __hook supone la clase para ser el en las que se llama.

    • Eventos de C++ nativo: ReceiverClass es la clase de receptor de eventos y HandlerMethod es el controlador.

    • eventos COM: ReceiverClass es la interfaz de receptor de eventos y HandlerMethod es uno de los controladores.

    • eventos administrados: ReceiverClass es la clase de receptor de eventos y HandlerMethod es el controlador.

  • receiver(opcional)
    Un puntero a una instancia de la clase de receptor de eventos.Si no especifica un receptor, el valor predeterminado es la clase o estructura de receptor en las que se llama __hook .

Uso

Puede ser el uso en cualquier ámbito de la función, incluida la principal, fuera de la clase de receptor de eventos.

Comentarios

Utilice la función intrínseca __hook en un receptor de eventos para asociar o enlazar un método controlador con un método de evento.Después se llama al controlador especificado cuando el origen provoca el evento especificado.Puede enlazar varios controladores a un único evento o enlace varios eventos a un único controlador.

Hay dos formas de __hook.Puede usar el primer formulario (de cuatro-argumento) en la mayoría de los casos, concretamente, para los receptores de eventos COM en los que el parámetro layout_dependent de event_receiver es Falso.

En estos casos no necesita el enlace todos los métodos en una interfaz antes de desencadenar un evento en uno de los métodos; sólo el método que controlará el evento debe estar enlazado.Puede usar el segundo formulario (de dos argumentos) de __hook sólo para un receptor de eventos COM en el**=true**layout_dependent.

__hook devuelve un valor largo.Devuelve un valor distinto de cero indica que se ha producido un error (eventos administrados producen una excepción).

Comprueba el compilador la existencia de un evento y que la firma del evento coincide con la firma de delegado.

A excepción de eventos COM, __hook y __unhook pueden llamar fuera del receptor de eventos.

Una alternativa a utilizar __hook es usar el operador +=.

Para obtener información sobre eventos administrados codificación en la nueva sintaxis, vea evento (Visual C++).

[!NOTA]

Una clase o struct basada en plantilla no puede contener eventos.

Ejemplo

Vea Control de eventos en C++ nativo y Control de eventos en COM para los ejemplos.

Vea también

Referencia

Palabras clave de C++

Control de eventos

event_source

event_receiver

__unhook

__raise