__unhook
Disocia de un método controlador de un evento.
long __unhook(
&SourceClass::EventMethod,
source,
&ReceiverClass::HandlerMethod
[, receiver = this]
);
long __unhook(
interface,
source
);
long __unhook(
source
);
Parámetros
&SourceClassEventMethod::
Un puntero al método del evento de que se elimina el método de control 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 es zafado de 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 zafará de 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, __unhook 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 __unhook .
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 __unhook en un receptor de eventos para ser o “zafe” de un método controlador de un método de evento.
Hay tres formas de __unhook.Puede usar el primer formulario (de cuatro-argumento) en la mayoría de los casos.Puede usar el segundo formulario (de dos argumentos) de __unhook sólo para un receptor de eventos COM; esto elimina la interfaz completa de eventos.Puede utilizar el tercer formulario (de uno-argumento) para desenlazar todos los delegados de origen especificado.
Devuelve un valor distinto de cero indica que se ha producido un error (eventos administrados producirán una excepción).
Si se llama __unhook en un evento y el controlador de eventos que no están enlazados ya, no tendrá ningún efecto.
En tiempo de compilación, el compilador comprueba que el evento existe y haga el tipo de parámetro que comprueba con el controlador especificado.
A excepción de eventos COM, __hook y __unhook pueden llamar fuera del receptor de eventos.
Una alternativa a utilizar __unhook es utilizar 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.