Freigeben über


ATL-Ereignisbehandlungs-Zusammenfassung

Im Allgemeinen COM-Ereignisse zu behandeln ist ein relativ einfacher Vorgang.Es gibt drei Hauptschritte:

  • Implementieren Sie die Ereignisschnittstelle für das Objekt.

  • Melden Sie sich die Ereignisquelle an, dass das Objekt Ereignisse empfangen will.

  • Melden Sie sich die Ereignisquelle wenn die Anforderungen des Objekts nicht mehr, Ereignisse empfangen ab.

Implementieren der Schnittstelle

Es gibt vier wichtige Möglichkeiten der Implementierung einer Schnittstelle mit ATL.

Ableitung von

Passend für Schnittstellentyp

Erfordert Sie, alle methods* zu implementieren

Erfordert eine Typbibliothek zur Laufzeit

Die Schnittstelle

Ereignisse beim

Ja

Nein

IDispatchImpl

Dual

Ja

Ja

IDispEventImpl

Dispatchschnittstelle

Nein

Ja

IDispEventSimpleImpl

Dispatchschnittstelle

Nein

Nein

* Wenn Klassen der ATL-Unterstützung, werden Sie nie benötigt, die IUnknown oder IDispatch-Methoden manuell zu implementieren.

Die Ereignisquelle anmelden und abmeldend

Es gibt drei grundlegende Möglichkeiten des Anmeldens und des Abmeldens einer Ereignisquelle mit ATL.

Melden Sie sich Funktion an

Melden Sie sich Funktion ab

Am festgestellt werden zur Verwendung mit

Erfordert Sie, ein Cookie nachzuverfolgen?

Kommentare

AtlAdvise, CComPtrBase::Advise

AtlUnadvise

Ereignisse beim oder duale Schnittstellen

Ja

AtlAdvise ist eine globale ATL-Funktion.CComPtrBase::Advise wird durch CComPtr und CComQIPtr verwendet.

IDispEventSimpleImpl::DispEventAdvise

IDispEventSimpleImpl::DispEventUnadvise

IDispEventImpl oder IDispEventSimpleImpl

Nein

Weniger Parameter als AtlAdvise, da die Basisklasse mehr Arbeit durchgeführt.

CComCompositeControl::AdviseSinkMap (TRUE)

CComCompositeControl::AdviseSinkMap (FALSE)

ActiveX-Steuerelemente in den zusammengesetzten Steuerelementen

Nein

CComCompositeControl::AdviseSinkMap benachrichtigt alle Senkenzuordnung der Einträge im - Ereignis an.Dieselbe Funktion benachrichtigt die Einträge ab.Diese Methode wird automatisch durch die CComCompositeControl-Klasse aufgerufen.

CAxDialogImpl::AdviseSinkMap (TRUE)

CAxDialogImpl::AdviseSinkMap (FALSE)

ActiveX-Steuerelemente in einem Dialogfeld

Nein

CAxDialogImpl::AdviseSinkMap besagt und benachrichtigt alle ActiveX-Steuerelemente in der Dialogfeldressource ab.Dies wird automatisch für Sie fertig.

Siehe auch

Konzepte

Ereignisbehandlung und ATL

Unterstützung von IDispEventImpl