Riepilogo della gestione degli eventi ATL

In generale, la gestione degli eventi COM è un processo relativamente semplice. Esistono tre passaggi principali:

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

Implementazione dell'interfaccia

Esistono quattro modi principali per implementare un'interfaccia usando ATL.

Derivare da Adatto al tipo di interfaccia Richiede l'implementazione di tutti i metodi* Richiede una libreria dei tipi in fase di esecuzione
Interfaccia Vtable No
IDispatchImpl Doppio
IDispEventImpl Interfaccia dispatch No
IDispEventSimpleImpl Interfaccia dispatch No No

* Quando si usano classi di supporto ATL, non è mai necessario implementare manualmente i IUnknown metodi o IDispatch .

Consulenza e mancata visualizzazione dell'origine evento

Esistono tre modi principali per consigliare e annullare la visualizzazione di un'origine evento tramite ATL.

Funzione Di consiglio Funzione Unadvise Più adatto per l'uso con Richiede di tenere traccia di un cookie Commenti
AtlAdvise, CComPtrBase::Advise AtlUnadvise Interfacce vtable o dual AtlAdvise è una funzione ATL globale. CComPtrBase::Advise viene usato da CComPtr e CComQIPtr.
IDispEventSimpleImpl::D ispEventAdvise IDispEventSimpleImpl::D ispEventUnadvise IDispEventImpl o IDispEventSimpleImpl No Meno parametri rispetto al AtlAdvise fatto che la classe di base esegue più operazioni.
CComCompositeControl::AdviseSinkMap(TRUE) CComCompositeControl::AdviseSinkMap(FALSE) Controlli ActiveX nei controlli compositi No CComCompositeControl::AdviseSinkMap consiglia tutte le voci nella mappa sink eventi. La stessa funzione annulla la visualizzazione delle voci. Questo metodo viene chiamato automaticamente dalla CComCompositeControl classe .
CAxDialogImpl::AdviseSinkMap(TRUE) CAxDialogImpl::AdviseSinkMap(FALSE) Controlli ActiveX in una finestra di dialogo No CAxDialogImpl::AdviseSinkMap consiglia e annulla la visualizzazione di tutti i controlli ActiveX nella risorsa finestra di dialogo. Questa operazione viene eseguita automaticamente.

Vedi anche

Gestione di eventi
Supporto di IDispEventImpl