Eine Meldungszuordnung ordnet eine Handlerfunktion eine bestimmte Nachricht, Befehl oder eine Benachrichtigung. Durch die Verwendung von ATL Nachricht Makros anzeigen, können Sie eine Meldungszuordnung für ein Fenster angeben. Die Fensterprozeduren in CWindowImpl, CDialogImplund CContainedWindow leiten ein Fenster Nachrichten an seine Meldungszuordnung.
Die Meldungshandlerfunktionen akzeptieren ein zusätzliches &Argument des Typs BOOLamp; . Dieses Argument gibt an, ob eine Nachricht verarbeitet wurde, und es soll TRUE standardmäßig. Eine Handlerfunktion kann dann legen das Argument FALSE an, dass es keine Nachricht behandelt hat. In diesem Fall weiterhin ATL eine Handlerfunktion in der Meldungszuordnung weiter suchen. Durch Festlegen dieses Arguments auf FALSE , Sie können zuerst einige Aktion in Reaktion auf eine Nachricht und dann die Standardverarbeitung oder einer anderen Handlerfunktion beenden Behandlung der Meldung.
ATL ermöglicht auch Kette Meldungszuordnungen, die die Meldungsbehandlung an eine in einer anderen Klasse definierte Meldungszuordnung leitet. Beispielsweise können Sie gemeinsame Meldungsbehandlung in einer separaten Klasse einheitliches Verhalten für alle Fenster Verkettung zu dieser Klasse zu implementieren. Sie können auf eine Basisklasse oder ein Datenmember der Klasse verketten.
ATL unterstützt auch dynamische Verkettung, welches Ihnen erlaubt zu Kette auf ein anderes Objekt Meldungszuordnung zur Laufzeit. Um dynamische Verkettung zu implementieren, müssen Sie die Klasse von CDynamicChainableiten. Deklarieren Sie das CHAIN_MSG_MAP_DYNAMIC -Makro in der Meldungszuordnung. CHAIN_MSG_MAP_DYNAMIC erfordert eine eindeutige Nummer, die zur Identifizierung des Objekts und die Meldungszuordnung, die Sie verketten sind. Sie müssen diese eindeutigen Wert durch einen Aufruf von CDynamicChain::SetChainEntry definieren.
Sie können für jede Klasse, die eine Meldungszuordnung deklariert verketten, vorausgesetzt die Klasse CMessageMapabgeleitet. CMessageMap kann ein Objekt seine Meldungszuordnungen anderer Objekte verfügbar zu machen. Beachten Sie, dass CWindowImpl bereits von CMessageMap abgeleitet ist.
Schließlich unterstützt ATL alternative Meldungszuordnungen, mit dem Makro ALT_MSG_MAP deklariert. Jede Alternative Meldungszuordnung wird durch eine eindeutige Nummer identifiziert, die Sie an ALT_MSG_MAPübergeben. Karten mit alternativen Nachricht, können Sie die Nachrichten von mehreren Fenstern in einer Karte behandeln. Beachten Sie, dass standardmäßig, CWindowImpl verwendet keine alternativen Meldungszuordnungen. Um diese Unterstützung hinzuzufügen, überschreiben Sie die WindowProc -Methode in Ihrem CWindowImpl-abgeleitete Klasse, und rufen Sie ProcessWindowMessage mit der Meldungs-ID Karte.