Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Palabra clave
Desvincula un método controlador de un evento.
Nota:
Los atributos de eventos en C++ nativo no son compatibles con C++ estándar. No se compilan al especificar el modo de conformidad /permissive-.
Sintaxis
long __unhook(
&SourceClass::EventMethod,
source,
&ReceiverClass::HandlerMethod
[, receiver = this]
);
long __unhook(
interface,
source
);
long __unhook(
source
);
Parámetros
&SourceClass::EventMethod
Puntero al método de evento desde el que se desenganche el método del controlador de eventos:
Eventos de C++ nativo:
SourceClasses la clase de origen del evento yEventMethodes el evento.Eventos COM:
SourceClasses la interfaz de origen del evento yEventMethodes uno de sus métodos.Eventos administrados:
SourceClasses la clase de origen del evento yEventMethodes el evento.
interface
El nombre de interfaz que se va a desenlazar de receiver, solo para los receptores de eventos COM en los que el parámetro layout_dependent del atributo event_receiver es true.
source
Un puntero a una instancia del origen de eventos. Dependiendo del código type especificado en event_receiver, source puede ser uno de estos tipos:
Un puntero nativo de objeto de origen de eventos.
Un puntero basado en
IUnknown(origen COM).Un puntero de objeto administrado (para eventos administrados).
&ReceiverClass::HandlerMethod Un puntero al método de controlador de eventos que se va a desenlazar de un evento. El controlador se especifica como un método de una clase o una referencia a esta; si no se especifica el nombre de la clase, __unhook supone que la clase es aquella en la que se llama.
Eventos de C++ nativo:
ReceiverClasses la clase del receptor de eventos yHandlerMethodes el controlador.Eventos COM:
ReceiverClasses la interfaz del receptor de eventos yHandlerMethodes uno de sus controladores.Eventos administrados:
ReceiverClasses la clase del receptor de eventos yHandlerMethodes el controlador.
receiver (opcional) Puntero a una instancia de la clase receptora de eventos. Si no se especifica un receptor, el valor predeterminado es la estructura o la clase del receptor en que se llama a __unhook.
Uso
Se puede usar en cualquier ámbito de función, incluido main, fuera de la clase del receptor de eventos.
Comentarios
Use la función intrínseca __unhook en un receptor de eventos para desasociar o "desenlazar" un método de controlador de un método de evento.
Hay tres formas de __unhook. Puede usar la primera forma (cuatro argumento) en la mayoría de los casos. Puede usar la segunda forma (dos argumentos) de __unhook solo para un receptor de eventos COM; de este modo, se desenlaza la interfaz de eventos completa. Puede utilizar la tercera forma (un argumento) para desenlazar todos los delegados del origen especificado.
Un valor devuelto distinto de cero indica que se ha producido un error (los eventos administrados producirán una excepción).
Si se llama a __unhook en un evento y un controlador de eventos que ya no están enlazados, no tendrá efecto.
En tiempo de compilación, el compilador comprueba que el evento existe y realiza la comprobación de tipo de parámetros con el controlador especificado.
Puede llamar a __hook y __unhook fuera del receptor de eventos, excepto los eventos COM.
Una alternativa al uso de __unhook es utilizar el operador -=.
Para información sobre la creación de código de eventos administrados en la nueva sintaxis, consulte event.
Nota:
Una estructura o clase basada en plantilla no puede contener eventos.
Ejemplo
Consulte Control de eventos en C++ nativo y Control de eventos en COM para ver ejemplos.
Consulte también
Palabras clave
event_source
event_receiver
__event
__hook
__raise