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 |
Dual |
Ja |
Ja |
|
Dispatchschnittstelle |
Nein |
Ja |
|
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 |
---|---|---|---|---|
Ereignisse beim oder duale Schnittstellen |
Ja |
AtlAdvise ist eine globale ATL-Funktion.CComPtrBase::Advise wird durch CComPtr und CComQIPtr verwendet. |
||
Nein |
Weniger Parameter als AtlAdvise, da die Basisklasse mehr Arbeit durchgeführt. |
|||
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. |
||
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. |