__unhook
Parola chiave
Annulla l'associazione di un metodo del gestore da un evento.
Nota
Gli attributi di evento in C++ nativi non sono compatibili con C++Standard. Non vengono compilati quando si specifica la /permissive-
modalità di conformità.
Sintassi
long __unhook(
&SourceClass::EventMethod,
source,
&ReceiverClass::HandlerMethod
[, receiver = this]
);
long __unhook(
interface,
source
);
long __unhook(
source
);
Parametri
&SourceClass::EventMethod
Puntatore al metodo di evento da cui si annulla ilhook del metodo del gestore eventi:
Eventi C++ nativi:
SourceClass
è la classe di origine evento edEventMethod
è l'evento.Eventi COM:
SourceClass
è l'interfaccia dell'origine evento edEventMethod
è uno dei relativi metodi.Eventi gestiti:
SourceClass
è la classe di origine evento edEventMethod
è l'evento.
interface
Nome dell'interfaccia di cui non è stato eseguito ilhook dal ricevitore, solo per i ricevitori di eventi COM in cui il parametro layout_dependent dell'attributo event_receiver
è true
.
source
Puntatore a un'istanza dell'origine evento. A seconda del codice type
specificato in event_receiver
, l'origine può essere uno di questi tipi:
Un puntatore a un oggetto di origine dell'evento nativo.
Puntatore
IUnknown
basato su COM.Un puntatore a un oggetto gestito (per gli eventi gestiti).
&ReceiverClass::HandlerMethod
Puntatore al metodo del gestore eventi da scollegare da un evento. Il gestore viene specificato come metodo di una classe o come riferimento allo stesso oggetto ; se non si specifica il nome della classe, __unhook
si presuppone che la classe sia quella in cui viene chiamata.
Eventi C++ nativi:
ReceiverClass
è la classe ricevitore di eventi edHandlerMethod
è il gestore.Eventi COM:
ReceiverClass
è l'interfaccia del ricevitore di eventi edHandlerMethod
è uno dei relativi gestori.Eventi gestiti:
ReceiverClass
è la classe ricevitore di eventi edHandlerMethod
è il gestore.
receiver
(facoltativo) Puntatore a un'istanza della classe ricevitore di eventi. Se non si specifica un ricevitore, il valore predefinito è la classe o la struttura ricevitore in cui __unhook
viene chiamata.
Utilizzo
Può essere usato in qualsiasi ambito di funzione, incluso main
, all'esterno della classe ricevitore di eventi.
Osservazioni:
Usare la funzione __unhook
intrinseca in un ricevitore di eventi per disassociare o "unhook" un metodo del gestore da un metodo di evento.
Esistono tre forme di __unhook
. Nella maggior parte dei casi, è possibile utilizzare la prima tipologia (a quattro argomenti). È possibile utilizzare il secondo formato (a due argomenti) solo per un ricevitore di __unhook
eventi COM, che annulla ilhook dell'intera interfaccia evento. È possibile utilizzare la terza tipologia (a un argomento) per eseguire l'unhook di tutti i delegati dall'origine specificata.
Un valore restituito diverso da zero indica che si è verificato un errore (gli eventi gestiti generano un'eccezione).
Se si chiama __unhook
su un evento e un gestore eventi che non sono già agganciati, non avrà alcun effetto.
In fase di compilazione, il compilatore verifica l'esistenza dell'evento ed effettua il controllo del tipo di parametro con il gestore specificato.
È possibile chiamare __hook
e __unhook
fuori dal ricevitore di eventi, ad eccezione degli eventi COM.
Un'alternativa all'uso __unhook
consiste nell'usare l'operatore -= .
Per informazioni sulla codifica degli eventi gestiti nella nuova sintassi, vedere evento.
Nota
Una classe o una struttura basata su template non può contenere eventi.
Esempio
Per esempi, vedere Gestione degli eventi in C++ nativo e gestione degli eventi in COM .
Vedi anche
Parole chiave
event_source
event_receiver
__event
__hook
__raise
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per