Mappe messaggi (ATL)
Una mappa messaggi associa una funzione di gestione con un messaggio specifico, un comando, o una notifica.Utilizzando macro della mappa messaggiATL, è possibile specificare una mappa messaggi per una finestra.Le procedure finestra CWindowImpl, in CDialogImple in CContainedWindowT i messaggi di una finestra alla mappa messaggi.
funzioni di gestore messaggi accetta un argomento aggiuntivo di tipo BOOL&.In questo argomento indica se il messaggio è stato elaborato e su TRUE per impostazione predefinita.Una funzione di gestione può quindi impostare l'argomento su FALSE per indicare che non è stato gestito un messaggio.In questo caso, ATL continuerà a trovare una funzione di gestione ulteriormente nella mappa messaggi.Impostando questo argomento a FALSE, è innanzitutto necessario eseguire un'azione in risposta a un messaggio e quindi consentire l'elaborazione predefinita o un'altra funzione di gestione per il completamento di gestire il messaggio.
Mappe messaggi concatenate
ALT consente anche alle mappe messaggi a catena, che indirizza la gestione dei messaggi a una mappa messaggi definita in un'altra classe.Ad esempio, è possibile implementare la gestione dei messaggi comune in una classe separata per fornire il comportamento uniforme per tutte le finestre che concatenate in quella classe.È possibile concatenare a una classe base o a un membro dati della classe.
ATL è inoltre possibile concatenare dinamico, che consente di concatenare alla mappa messaggi di un altro oggetto in fase di esecuzione.Per distribuire concatenare dinamico, è necessario derivare la classe da CDynamicChain.Quindi dichiarare la macro CHAIN_MSG_MAP_DYNAMIC nella mappa messaggi.CHAIN_MSG_MAP_DYNAMIC richiede un numero univoco che identifica l'oggetto e la mappa messaggi che si concatenano.È necessario definire questo valore univoco con una chiamata a CDynamicChain::SetChainEntry.
È possibile concatenare qualsiasi classe che dichiara una mappa messaggi, se la classe deriva da CMessageMap.CMessageMap consente a un oggetto di esporre le mappe dei messaggi ad altri oggetti.Si noti che CWindowImpl già deriva da CMessageMap.
Alternare le mappe dei messaggi
Infine, mappe messaggi alternate il supporto ATL, dichiarate con la macro ALT_MSG_MAP.Ciascuna mappa messaggi alternativa è identificata da un numero univoco, che viene passato a ALT_MSG_MAP.Utilizzando le mappe messaggi alternate, è possibile gestire i messaggi di windows in un mapping.Notare che per impostazione predefinita, CWindowImpl non utilizza le mappe messaggi alternate.Per aggiungere il supporto, eseguire l'override del metodo WindowProc nel CWindowImplclasse derivata da e chiamare ProcessWindowMessage con l'identificatore della mappa messaggi.