__unhook
Dissocia un metodo per la gestione di un evento.
long __unhook(
&SourceClass::EventMethod,
source,
&ReceiverClass::HandlerMethod
[, receiver = this]
);
long __unhook(
interface,
source
);
long __unhook(
source
);
Parametri
&SourceClass::EventMethod
Un puntatore al metodo dell'evento da cui sganciate 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 è sganciato da 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 sganciare da un evento.Il gestore viene specificato come metodo di una classe o di riferimento allo stesso; se non si specifica il nome della classe, __unhook 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 __unhook 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 __unhook in un ricevitore di eventi da dissociare o “sganciare„ un metodo del gestore da un metodo di evento.
Esistono tre forme di __unhook.È possibile utilizzare il primo form (dell'quattro-argomento) nella maggior parte dei casi.È possibile utilizzare il secondo formato (a due argomenti) di __unhook solo per un ricevitore di eventi COM, si disconnette l'intera interfaccia eventi.È possibile utilizzare il terzo form (dell'un-argomento) per sganciare tutti i delegati dall'origine specificata.
Un valore restituito diverso da zero indica che si è verificato un errore (gli eventi gestiti genereranno un'eccezione).
Se si chiama __unhook in un evento e un gestore eventi che non vengono agganciati, non avrà effetto.
In fase di compilazione, il compilatore verifica che l'evento esista e sia il tipo di parametro che controlla con il gestore specificato.
Ad eccezione degli eventi COM, __hook e __unhook può essere chiamato all'esterno del ricevitore di eventi.
Un'alternativa all'utilizzo __unhook è utilizzare - = 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.