Partager via


Tables des messages (ATL)

Une table des messages associe une fonction gestionnaire avec un message particulier, une commande, ou une notification.À l'aide de macros de table des messagesATL, vous pouvez spécifier une table des messages pour une fenêtre.Les procédures de fenêtre dans CWindowImpl, CDialogImpl, et CContainedWindowT dirigent les messages d'une fenêtre à sa table des messages.

fonctions gestionnaires de messages acceptent un argument de type BOOL&.Cet argument indique si un message a été traité, et il est défini à TRUE par défaut.Une fonction gestionnaire peut ensuite définir l'argument en FALSE pour indiquer qu'il n'est pas géré un message.Dans ce cas, ATL continue à rechercher une fonction gestionnaire plus loin dans la table des messages.En définissant cet argument à FALSE, vous pouvez d'abord exécuter une action en réponse à un message puis permettre le traitement de la valeur par défaut ou une fonction gestionnaire différent à la fin de le message.

Tables des messages liées

ATL vous permet également aux tables des messages à chaînes, qui dirige la gestion des messages à une table des messages définie dans une autre classe.Par exemple, vous pouvez implémenter la gestion des messages commune dans une classe distincte pour fournir le comportement uniforme pour toutes les fenêtres chaînant à cette classe.Vous pouvez enchaîner à une classe de base ou à une donnée membre de votre classe.

ATL prend également en charge le chaînage dynamique, qui vous permet à la chaîne à la table des messages d'un autre objet au moment de l'exécution.Pour implémenter le chaînage dynamique, vous devez dériver votre classe de CDynamicChain.Déclarez la macro de CHAIN_MSG_MAP_DYNAMIC dans votre table des messages.CHAIN_MSG_MAP_DYNAMIC requiert un nombre unique qui identifie l'objet et la table des messages auxquels vous chaînez.Vous devez définir cette valeur unique via un appel à CDynamicChain::SetChainEntry.

Vous pouvez enchaîner à toute classe qui déclare une table des messages, si la classe dérive de CMessageMap.CMessageMap permet à un objet d'exposer ses tables des messages à d'autres objets.Notez qu' CWindowImpl dérive déjà d' CMessageMap.

Tables des messages secondaires

Enfin, les tables des messages secondaires de prises en charge ATL, déclarées avec la macro d' ALT_MSG_MAP .Chaque table des messages secondaire est identifiée par un numéro unique, que vous passez à ALT_MSG_MAP.Utilisation de tables des messages secondaires, vous pouvez gérer les messages de plusieurs fenêtres dans une carte.Notez que par défaut, CWindowImpl n'utilise pas les tables des messages secondaires.Pour ajouter cette prise en charge, remplacez la méthode d' WindowProc dans votre CWindowImplclasse dérivée de et appelez ProcessWindowMessage avec l'identificateur de la table des messages.

Voir aussi

Référence

Implémentation d'une fenêtre