Freigeben über


Implementieren der Ereignisbehandlungs-Schnittstelle

ATL können Sie mit allen drei Elementen, die zum Behandeln von Ereignissen erforderlich sind: die Ereignisschnittstelle implementieren, die Ereignisquelle und das Abmelden der Ereignisquelle anmeldend.Die genauen Schritte, die Sie ausführen, hängen vom Typ der Ereignisschnittstelle und den Leistungsanforderungen der Anwendung ab.

Die am häufigsten verwendeten Methoden der Implementierung einer Schnittstelle mit ATL sind:

  • Von einer benutzerdefinierten Schnittstelle direkt berechnen.

  • Ableiten von IDispatchImpl für die duale Schnittstellen in einer Typbibliothek beschrieben.

  • Ableiten von IDispEventImpl für die Dispatchschnittstellen in einer Typbibliothek beschrieben.

  • Ableiten von IDispEventSimpleImpl für die Disp-Schnittstellen beschrieben nicht in einer Typbibliothek oder, wenn Sie die Effizienz verbessern möchten, indem Sie nicht zur Laufzeit die Typinformationen laden.

Wenn Sie eine benutzerdefinierte oder eine duale Schnittstelle implementieren, sollten Sie die Ereignisquelle anmelden, indem Sie AtlAdvise oder CComPtrBase::Advise aufrufen.Sie müssen das Cookie verfolgen, das durch den Aufruf sich zurückgegeben wird.Aufruf AtlUnadvise, um die Verbindung zu unterbrechen.

Wenn Sie eine Dispatchschnittstelle mithilfe IDispEventImpl oder IDispEventSimpleImpl implementieren, sollten Sie die Ereignisquelle anmelden, indem Sie IDispEventSimpleImpl::DispEventAdvise aufrufen.Aufruf IDispEventSimpleImpl::DispEventUnadvise, um die Verbindung zu unterbrechen.

Wenn Sie IDispEventImpl als Basisklasse zusammengesetztes Steuerelement verwenden, werden die Ereignisquellen, die in der Senkenzuordnung aufgeführt sind, automatisch mit CComCompositeControl::AdviseSinkMap angemeldet und abgemeldet.

Die IDispEventImpl und IDispEventSimpleImpl-Klassen verwalten das Cookie für Sie.

Siehe auch

Konzepte

Ereignisbehandlung und ATL