__hook
Associa um método do manipulador um evento.
long __hook(
&SourceClass::EventMethod,
source,
&ReceiverClass::HandlerMethod
[, receiver = this]
);
long __hook(
interface,
source
);
Parâmetros
**&**SourceClass::EventMethod
Um ponteiro para o método de evento para o qual você conecta 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 conectado a 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 conectado a 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, __hook 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 __hook é 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 __hook em um receptor de eventos para associar ou vincular um método de manipulador com um método de evento.O manipulador especificado é então chamado quando a fonte aumenta o evento especificado.Você pode conectar vários manipuladores para um único evento ou vincular vários eventos a um único manipulador.
Existem duas formas de __hook.Você pode usar o primeiro formulário (quatro-argumento) na maioria dos casos, especificamente, para receptores de evento COM em que o layout_dependent parâmetro da event_receiver atributo é false.
Nesses casos você não precisará capturar todos os métodos em uma interface antes do acionamento de um evento em um dos métodos; somente o método manipulando o evento precisa ser conectado.Você pode usar o segundo formulário (dois argumentos) de __hook somente para um receptor de eventos COM em que layout_dependent**= true**.
__hookRetorna um valor long.Um valor de retorno diferente de zero indica que ocorreu um erro (eventos gerenciados acionar uma exceção).
O compilador verifica a existência de um evento e que a assinatura do evento concorda com a assinatura do delegado.
Com exceção dos eventos COM, __hook e __unhook pode ser chamado fora o receptor de eventos.
Uma alternativa ao uso __hook é 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.