Compartir a través de


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

Vea también

Referencia

Palabras clave de C++

event_source

event_receiver

__event

__hook

__raise