Freigeben über


Meldungszuordnungen (ATL)

Eine Nachrichtenzuordnung ordnet eine Handlerfunktion einer bestimmten Nachricht, einem bestimmten Befehl oder einer bestimmten Benachrichtigung zu. Mithilfe von ATL-Nachrichtenzuordnungsmakros können Sie eine Nachrichtenzuordnung für ein Fenster angeben. Die Fensterprozeduren in CWindowImpl, CDialogImplund CContainedWindowT leiten die Nachrichten eines Fensters an die Zugehörige Nachrichtenzuordnung weiter.

Die Nachrichtenhandlerfunktionen akzeptieren ein zusätzliches Argument vom Typ BOOL&. Dieses Argument gibt an, ob eine Nachricht verarbeitet wurde und standardmäßig auf TRUE festgelegt ist. Eine Handlerfunktion kann dann das Argument auf FALSE festlegen, um anzugeben, dass es keine Nachricht behandelt hat. In diesem Fall sucht ATL weiter in der Nachrichtenzuordnung nach einer Handlerfunktion. Wenn Sie dieses Argument auf FALSE festlegen, können Sie zuerst eine Aktion als Reaktion auf eine Nachricht ausführen und dann zulassen, dass die Standardverarbeitung oder eine andere Handlerfunktion die Verarbeitung der Nachricht abschließen kann.

Verkettete Nachrichtenzuordnungen

ATL ermöglicht es Ihnen auch, Nachrichtenzuordnungen zu verketten, die die Nachrichtenverarbeitung auf eine in einer anderen Klasse definierte Nachrichtenzuordnung weiterleiten. Sie können beispielsweise die allgemeine Nachrichtenbehandlung in einer separaten Klasse implementieren, um ein einheitliches Verhalten für alle Fensterverkettungen mit dieser Klasse bereitzustellen. Sie können eine Verketten mit einer Basisklasse oder einem Datenmememm Ihrer Klasse ausführen.

ATL unterstützt auch dynamische Verkettung, sodass Sie zur Laufzeit eine Verkettung mit der Nachrichtenzuordnung eines anderen Objekts durchführen können. Um dynamische Verkettung zu implementieren, müssen Sie Ihre Klasse von CDynamicChain ableiten. Deklarieren Sie dann das CHAIN_MSG_MAP_DYNAMIC Makro in Ihrer Nachrichtenzuordnung. CHAIN_MSG_MAP_DYNAMIC erfordert eine eindeutige Nummer, die das Objekt und die Nachrichtenzuordnung identifiziert, mit der Sie verketten. Sie müssen diesen eindeutigen Wert über einen Aufruf definieren.CDynamicChain::SetChainEntry

Sie können mit jeder Klasse verkettet werden, die eine Nachrichtenzuordnung deklariert, vorausgesetzt, die Klasse wird von CMessageMap abgeleitet. CMessageMap ermöglicht es einem Objekt, seine Nachrichtenzuordnungen anderen Objekten zur Verfügung zu stellen. Beachten Sie, dass CWindowImpl bereits von CMessageMap.

Alternative Nachrichtenzuordnungen

Schließlich unterstützt ATL alternative Nachrichtenzuordnungen, die mit dem ALT_MSG_MAP-Makro deklariert werden. Jede alternative Nachrichtenzuordnung wird durch eine eindeutige Nummer identifiziert, die Sie an ALT_MSG_MAP übergeben. Mithilfe alternativer Nachrichtenzuordnungen können Sie die Nachrichten mehrerer Fenster in einer Karte behandeln. Beachten Sie, CWindowImpl dass standardmäßig keine alternativen Nachrichtenzuordnungen verwendet werden. Um diese Unterstützung hinzuzufügen, überschreiben Sie die WindowProc Methode in Ihrer CWindowImplabgeleiteten Klasse, und rufen ProcessWindowMessage Sie sie mit dem Nachrichtenzuordnungsbezeichner auf.

Siehe auch

Implementieren eines Fensters