Freigeben über


Meldungszuordnungen (ATL)

Eine Meldungszuordnung ordnet eine Handlerfunktion mit einer bestimmten Meldung, einen Befehl oder einer Benachrichtigung zu.Mit Meldungszuordnungsmakros ATL verwenden, können Sie eine Meldungszuordnung für ein Fenster angeben.Die Fensterprozeduren in CWindowImpl, in CDialogImpl und in CContainedWindowT verweisen die Meldungen eines Fensters auf seine Meldungszuordnung.

Meldungshandlerfunktionen akzeptieren ein zusätzliches Argument vom Typ BOOL&.Dieses Argument gibt an, ob eine Nachricht verarbeitet wurde, und wird zu TRUE standardmäßig festgelegt.Eine Handlerfunktion kann das Argument auf FALSE dann festlegen, um anzugeben, dass eine Nachricht nicht bearbeitet hat.In diesem Fall wird ATL fort, um nach einer Handlerfunktion weiter in der Meldungszuordnung zu suchen.Mithilfe dieses Argument zu FALSE festlegen, können Sie Aktionen als Reaktion auf eine Nachricht zuerst ausführen und eine Standardverarbeitung oder eine andere Handlerfunktion zum Ende dann ermöglichen die Meldung behandelt.

Verkettete Meldungszuordnungen

ATL können Sie in auch den Kettenmeldungszuordnungen, das die Meldungsbehandlung auf eine Meldungszuordnung verweist, die in einer anderen Klasse definiert ist.Beispielsweise können Sie Standardnachrichtbehandlung in einer separaten Klasse implementieren, um einheitliches Verhalten für alle Fenster bereitzustellen verkettend zu dieser Klasse.Sie können auf eine Basisklasse oder einen Datenmember der Klasse verketten.

ATL unterstützt auch dynamische Verketten, die Sie der Kette zur Meldungszuordnung eines anderen Objekts zur Laufzeit ermöglicht.Um dynamische Verketten zu implementieren, müssen Sie die Klasse von CDynamicChain berechnen.Deklarieren Sie dann das CHAIN_MSG_MAP_DYNAMIC-Makro in der Meldungszuordnung.CHAIN_MSG_MAP_DYNAMIC erfordert eine eindeutige Zahl, die das Objekt und die Meldungszuordnung identifiziert, mit denen Sie verketten.Sie müssen diesen eindeutigen Wert durch einen Aufruf CDynamicChain::SetChainEntry definieren.

Sie können eine beliebige Klasse verketten, die eine Meldungszuordnung deklariert, vorausgesetzt die Klasse von CMessageMap abgeleitet.CMessageMap können Objekte, um seine Meldungszuordnungen anderen Objekten verfügbar zu machen.Beachten Sie, dass CWindowImpl bereits von CMessageMap abgeleitet.

Alternative Meldungszuordnungen

Schließlich ATL-Unterstützungs-alternativeMeldungszuordnungen deklariert, mit dem ALT_MSG_MAP-Makro.Jede alternative Meldungszuordnung wird durch eine eindeutige Zahl identifiziert, die Sie zu ALT_MSG_MAP übergeben.Verwenden von alternativen Meldungszuordnungen können Sie die Meldungen aus mehreren Fenstern in einer Zuordnung bearbeiten.Beachten Sie das standardmäßig, CWindowImpl verwendet keine alternative Meldungszuordnungen.Um diese Unterstützung hinzuzufügen, überschreiben Sie die WindowProc-Methode im CWindowImpl von abgeleitete Klasse und rufen Sie ProcessWindowMessage mit dem Meldungszuordnungsbezeichner auf.

Siehe auch

Referenz

Implementieren eines Fensters