Freigeben über


Zusammenfassung der ATL-Ereignisbehandlung

Im Allgemeinen ist die Behandlung von COM-Ereignissen ein relativ einfacher Prozess. Es gibt drei Hauptschritte:

  • Implementieren Sie die Ereignisschnittstelle für Ihr Objekt.

  • Empfehlen Sie der Ereignisquelle, dass Ihr Objekt Ereignisse empfangen möchte.

  • Heben Sie die Benachrichtigung der Ereignisquelle auf, wenn ihr Objekt keine Ereignisse mehr empfangen muss.

Implementieren der Schnittstelle

Es gibt vier Hauptmethoden für die Implementierung einer Schnittstelle mit ATL.

Ableiten von Geeignet für Schnittstellentyp Erfordert, dass Sie alle Methoden implementieren* Erfordert zur Laufzeit eine Typbibliothek.
-Schnittstelle Vtable Ja No
IDispatchImpl Dual Ja Ja
IDispEventImpl Disp-Schnittstelle No Ja
IDispEventSimpleImpl Disp-Schnittstelle No No

* Wenn Sie ATL-Supportklassen verwenden, müssen Sie die IUnknown Methoden IDispatch nie manuell implementieren.

Beratung und Unadvising der Ereignisquelle

Es gibt drei Hauptmethoden zum Beraten und Aufheben der Veröffentlichung einer Ereignisquelle mithilfe von ATL.

Funktion beraten Unadvise-Funktion Am besten geeignet für die Verwendung mit Erfordert, dass Sie ein Cookie nachverfolgen Kommentare
AtlAdvise, CComPtrBase::Advise AtlUnadvise Vtable- oder duale Schnittstellen Ja AtlAdvise ist eine globale ATL-Funktion. CComPtrBase::Advise wird von CComPtr und CComQIPtr verwendet.
IDispEventSimpleImpl::D ispEventAdvise IDispEventSimpleImpl::D ispEventUnadvise IDispEventImpl oder IDispEventSimpleImpl No Weniger Parameter als AtlAdvise seit der Basisklasse mehr Arbeit leistet.
CComCompositeControl::AdviseSinkMap(TRUE) CComCompositeControl::AdviseSinkMap(FALSE) ActiveX-Steuerelemente in zusammengesetzten Steuerelementen No CComCompositeControl::AdviseSinkMap rät alle Einträge in der Ereignissenkenzuordnung. Die gleiche Funktion hebt die Einträge auf. Diese Methode wird automatisch von der CComCompositeControl Klasse aufgerufen.
CAxDialogImpl::AdviseSinkMap(TRUE) CAxDialogImpl::AdviseSinkMap(FALSE) ActiveX-Steuerelemente in einem Dialogfeld No CAxDialogImpl::AdviseSinkMap weist alle ActiveX-Steuerelemente in der Dialogressource auf und hebt sie auf. Dies erfolgt automatisch für Sie.

Siehe auch

Ereignisbehandlung
Unterstützen von IDispEventImpl