Condividi tramite


__hook

Associazione di un metodo del gestore a un evento.

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

Parametri

  • &SourceClass::EventMethod
    Un puntatore al metodo dell'evento a cui agganciate il metodo del gestore eventi:

    • Eventi nativi C++: SourceClass è la classe di origine evento e EventMethod è.

    • Eventi COM: SourceClass rappresenta l'interfaccia di origine evento e EventMethod è uno dei metodi.

    • eventi gestiti: SourceClass è la classe di origine evento e EventMethod è.

  • interface
    Il nome dell'interfaccia che viene agganciato a receiver, solo per i ricevitori di eventi COM in cui layout_dependent parametro di event_receiver l'attributo è true.

  • source
    Un puntatore a un'istanza dell'origine evento.A seconda del codice type originati event_receiver, database di origine può essere:

    • Un puntatore all'oggetto nativo di origine evento.

    • IUnknownpuntatore basato (origine COM.

    • Un puntatore all'oggetto gestito (per gli eventi gestiti).

  • &Receiverassembly::HandlerMethod
    Un puntatore al metodo del gestore eventi da associare a un evento.Il gestore viene specificato come metodo di una classe o di riferimento allo stesso; se non si specifica il nome della classe, __hook presuppone che la classe sia quella in cui viene chiamato.

    • Eventi nativi C++: Receiverassembly è la classe del ricevitore di eventi e HandlerMethod è il gestore.

    • Eventi COM: Receiverassembly è l'interfaccia ricevitore di eventi e HandlerMethod è uno dei propri gestori.

    • eventi gestiti: Receiverassembly è la classe del ricevitore di eventi e HandlerMethod è il gestore.

  • receiver(facoltativo)
    Un puntatore a un'istanza della classe del ricevitore di eventi.Se non si specifica un ricevitore, l'impostazione predefinita è la classe o la struttura del ricevitore in cui __hook viene chiamato.

Utilizzo

È possibile utilizzare in qualsiasi ambito della funzione, incluso l'oggetto principale, all'esterno della classe del ricevitore di eventi.

Note

utilizzare la funzione intrinseca __hook in un ricevitore di eventi per associare o associare un metodo del gestore con un metodo di evento.Il gestore specificato viene quindi chiamato quando il database di origine genera l'evento specificato.È possibile associare i gestori a un solo evento o associare più eventi a un unico gestore.

Sono disponibili due forme di __hook.È possibile utilizzare il primo form (dell'quattro-argomento) nella maggior parte dei casi, in particolare, per i ricevitori di eventi COM in cui layout_dependent parametro di event_receiver l'attributo è false.

In questi casi non è necessario associare tutti i metodi in un'interfaccia prima di generare un evento su uno dei metodi; solo il metodo che gestisce l'evento deve essere agganciato.È possibile utilizzare il secondo formato (a due argomenti) di __hook solo per un ricevitore di eventi COM in cui layout_dependent**=true**.

__hook restituisce un valore lungo.Un valore restituito diverso da zero indica che si è verificato un errore (gli eventi gestiti generano un'eccezione).

Il compilatore controlla la presenza di un evento e che la firma dell'evento concorda con la firma del delegato.

Ad eccezione degli eventi COM, __hook e __unhook può essere chiamato all'esterno del ricevitore di eventi.

Un'alternativa all'utilizzo __hook è possibile utilizzare l'operatore +=.

Per informazioni sugli eventi gestiti codifica nella nuova sintassi, vedere evento (Visual C++).

[!NOTA]

Una classe o una struttura basata su template non può contenere eventi.

Esempio

vedere Gestione degli eventi in C++ nativo e Gestione degli eventi in COM per gli esempi.

Vedere anche

Riferimenti

Parole chiave C++

Gestione degli eventi

event_source

event_receiver

__unhook

__raise