Catégories de messages
Quels types de messages écrivez-vous pour trois catégories principales :
messages Windows
Cela inclut principalement ces messages commençant par le préfixe WM_ , à l’exception de WM_COMMAND. Les messages Windows sont traités par les fenêtres et les vues. Ces messages peuvent avoir des paramètres qui permettent de déterminer comment traiter le message.
Notifications de contrôle
Cela inclut WM_COMMAND messages de notification provenant de contrôles et d’autres fenêtres enfants vers leurs fenêtres parentes. Par exemple, un contrôle d’édition envoie à son parent un message WM_COMMAND contenant le code de notification de contrôle EN_CHANGE lorsque l’utilisateur a effectué une action qui a peut-être modifié du texte dans le contrôle d’édition. Le gestionnaire de la fenêtre du message répond au message de notification d'une certaine façon appropriée, comme récupérer le texte du contrôle.
L’infrastructure achemine les messages de notification de contrôle comme d’autres messages WM_ . Toutefois, une exception est le message de notification de contrôle BN_CLICKED envoyé par des boutons lorsque l’utilisateur clique dessus. Ce message est traité en particulier en tant que message de commande et routé comme les autres commandes.
Messages de commande
Cela inclut WM_COMMAND messages de notification à partir d’objets d’interface utilisateur : menus, boutons de barre d’outils et touches d’accélérateur. L’infrastructure traite les commandes différemment des autres messages, et elles peuvent être gérées par davantage de types d’objets, comme expliqué dans Les cibles de commande.
Messages Windows et messages de notification de contrôle
Les messages des catégories 1 et 2 (messages et notifications de contrôle Windows) sont traités par Windows : objets de classes dérivées de la classe CWnd
. Cela inclut CFrameWnd
, CMDIFrameWnd
, CMDIChildWnd
, CView
, CDialog
, et vos propres classes dérivées des classes de base. De tels objets encapsulent HWND
, un descripteur de la fenêtre Windows.
Messages de commande
Les messages de la catégorie 3 (les commandes) peuvent être gérés par une plus grande variété d'objets : documents, modèles de document et l'objet d'application lui-même en plus des fenêtres et des vues. Lorsqu'une commande affecte directement un certain objet particulier, il est logique d'avoir ce handle d'objet de la commande. Par exemple, la commande Ouvrir dans le menu Fichier est logiquement associée à l'application : l'application ouvre un document spécifié en acceptant la commande. Donc le gestionnaire de la commande Ouvrir est une fonction membre de la classe d'application. Pour plus d’informations sur les commandes et la façon dont elles sont routées vers des objets, consultez Comment l’infrastructure appelle un gestionnaire.