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