Implementieren der Ereignisbehandlungsschnittstelle
ATL hilft Ihnen bei allen drei Elementen, die für die Behandlung von Ereignissen erforderlich sind: Implementieren der Ereignisschnittstelle, Beratung der Ereignisquelle und Aufheben der Veröffentlichung der Ereignisquelle. Die genauen Schritte, die Sie ausführen müssen, hängen vom Typ der Ereignisschnittstelle und den Leistungsanforderungen Ihrer Anwendung ab.
Die am häufigsten verwendeten Methoden zum Implementieren einer Schnittstelle mit ATL sind:
Ableiten von einer benutzerdefinierten Schnittstelle direkt.
Ableiten von IDispatchImpl für duale Schnittstellen, die in einer Typbibliothek beschrieben werden.
Ableiten von IDispEventImpl für in einer Typbibliothek beschriebeneDispinterfaces.
Ableiten von IDispEventSimpleImpl für dispinterfaces, die nicht in einer Typbibliothek beschrieben werden oder wenn Sie die Effizienz verbessern möchten, indem Sie die Typinformationen zur Laufzeit nicht laden.
Wenn Sie eine benutzerdefinierte oder duale Schnittstelle implementieren, sollten Sie die Ereignisquelle durch Aufrufen von AtlAdvise oder CComPtrBase::Advise beraten. Sie müssen das cookie, das vom Anruf selbst zurückgegeben wird, nachverfolgen. Rufen Sie AtlUnadvise auf, um die Verbindung zu unterbrechen.
Wenn Sie eine dispinterface mit IDispEventImpl
oder IDispEventSimpleImpl
implementieren, sollten Sie die Ereignisquelle durch Aufrufen von IDispEventSimpleImpl::D ispEventAdvise empfehlen. Rufen Sie IDispEventSimpleImpl::D ispEventUnadvise auf, um die Verbindung zu unterbrechen.
Wenn Sie als Basisklasse eines zusammengesetzten Steuerelements verwenden IDispEventImpl
, werden die in der Senkenzuordnung aufgeführten Ereignisquellen empfohlen und automatisch mithilfe von CComCompositeControl::AdviseSinkMap entfernt.
Die IDispEventImpl
Und IDispEventSimpleImpl
Klassen verwalten das Cookie für Sie.