Principi di gestione degli eventi
Esistono tre passaggi comuni a tutte le operazioni di gestione degli eventi. Sarà necessario:
Implementare l'interfaccia evento nell'oggetto.
Consigliare all'origine evento che l'oggetto desidera ricevere eventi.
Annullare la visualizzazione dell'origine evento quando l'oggetto non deve più ricevere eventi.
Il modo in cui si implementerà l'interfaccia evento dipenderà dal relativo tipo. Un'interfaccia evento può essere vtable, dual o dispinterface. Spetta alla finestra di progettazione dell'origine evento definire l'interfaccia; spetta all'utente implementare tale interfaccia.
Nota
Anche se non esistono motivi tecnici per cui un'interfaccia di evento non può essere doppia, esistono diversi motivi di progettazione validi per evitare l'uso di duali. Tuttavia, si tratta di una decisione presa dalla finestra di progettazione/implementazione dell'origine evento. Poiché si lavora dal punto di vista dell'evento sink
, è necessario consentire la possibilità che non si abbia scelta, ma di implementare un'interfaccia a doppio evento. Per altre informazioni sulle interfacce duali, vedere Interfacce duali e ATL.
La visualizzazione dell'origine evento può essere suddivisa in tre passaggi:
Eseguire una query sull'oggetto di origine per I Connessione ionPointContainer.
Chiama I Connessione ionPointContainer::Find Connessione ionPoint passando l'IID dell'interfaccia evento che ti interessa. In caso di esito positivo, verrà restituita l'interfaccia I Connessione ionPoint in un oggetto punto di connessione.
Chiamare I Connessione ionPoint::Advise passando il del sink dell'evento
IUnknown
. In caso di esito positivo, verrà restituito unDWORD
cookie che rappresenta la connessione.
Dopo aver registrato correttamente l'interesse a ricevere eventi, i metodi sull'interfaccia evento dell'oggetto verranno chiamati in base agli eventi generati dall'oggetto di origine. Quando non è più necessario ricevere eventi, è possibile passare di nuovo il cookie al punto di connessione tramite I Connessione ionPoint::Unadvise. In questo modo verrà interrotta la connessione tra l'origine e il sink.
Prestare attenzione a evitare cicli di riferimento durante la gestione degli eventi.
Vedi anche
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