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