Compartilhar via


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

Manipulação de eventos

EVENT_SOURCE

event_receiver

__unhook

__raise