__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.