Compartilhar via


__unhook

Dissociates um método do manipulador de um evento.

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

Parâmetros

  • **&**SourceClass::EventMethod
    Um ponteiro para o método de evento a partir do qual você desencaixe o método de manipulador de eventos:

    • Os eventos nativos do C++: SourceClass é a classe de origem do evento e EventMethod é o evento.

    • Eventos COM: SourceClass é a interface de origem do evento e EventMethod é um dos seus métodos.

    • Gerenciado de eventos: SourceClass é a classe de origem do evento e EventMethod é o evento.

  • interface
    O nome da interface que está sendo desligado do receiver, apenas para receptores de evento COM em que o layout_dependent parâmetro da event_receiver atributo é true.

  • fonte
    Um ponteiro para uma instância de origem do evento.Dependendo do código type especificado em event_receiver, origem pode ser uma das seguintes opções:

    • Um indicador de objeto de origem de evento nativo.

    • Um IUnknown-com base em ponteiro (origem COM).

    • Um ponteiro de objeto gerenciado (para eventos gerenciados).

  • **&**ReceiverClass::HandlerMethod
    Um ponteiro para o método do manipulador de eventos para ser soltos a partir de um evento.O manipulador é especificado como um método de uma classe ou uma referência para o mesmo; Se você não especificar o nome da classe, __unhook supõe que a classe seja que, no qual ele é chamado.

    • Os eventos nativos do C++: ReceiverClass é a classe do receptor de evento e HandlerMethod é o manipulador.

    • Eventos COM: ReceiverClass é a interface de receptor de eventos e HandlerMethod é um dos seus controladores.

    • Gerenciado de eventos: ReceiverClass é a classe do receptor de evento e HandlerMethod é o manipulador.

  • receiver(opcional)
    Um ponteiro para uma instância da classe do receptor do evento.Se você não especificar um receptor, o padrão é a classe do receptor ou estrutura na qual __unhook é chamado.

Uso

Pode ser usado em qualquer escopo de função, incluindo principal, fora da classe do receptor de evento.

Comentários

Use a função intrínseca __unhook em um receptor de eventos para dissociar ou um método do manipulador de um método de evento "desencaixe".

Existem três formas de __unhook.Você pode usar o primeiro formulário (quatro-argumento) na maioria dos casos.Você pode usar o segundo formulário (dois argumentos) de __unhook somente para um receptor de eventos COM; Isso desvincula a interface de eventos inteira.Você pode usar a terceira forma (um argumento) para desconectar todos os delegados a partir da origem especificada.

Um valor de retorno diferente de zero indica que ocorreu um erro (eventos gerenciados lançará uma exceção).

Se você chamar __unhook em um evento e o manipulador de eventos que já não estiverem conectados, ele só terá efeito.

Em tempo de compilação, o compilador verifica que o evento existe e faz a verificação de tipo de parâmetro com o manipulador especificado.

Com exceção dos eventos COM, __hook e __unhook pode ser chamado fora o receptor de eventos.

Uma alternativa ao uso __unhook é usar o operador-=.

Para obter informações sobre eventos gerenciados na nova sintaxe de codificação, consulte evento (Visual C++).

ObservaçãoObservação

Modelado class ou struct não pode conter eventos.

Exemplo

Consulte Manipulação de eventos no C++ nativo e Manipulação de eventos no COM para obter exemplos.

Consulte também

Referência

Palavras-chave C++

EVENT_SOURCE

event_receiver

Event

__hook

__raise