Routage des commandes
Votre responsabilité en matière d’utilisation des commandes est limitée à l’établissement de connexions de mappage de messages entre les commandes et leurs fonctions de gestionnaire, une tâche pour laquelle vous utilisez l’Assistant Classe MFC. Vous devez également écrire le code pour les gestionnaires de commandes.
Les messages de fenêtres sont généralement envoyés dans la fenêtre frame principale, mais les messages de commande sont ensuite routés vers d’autres objets. L’infrastructure achemine les commandes par le biais d’une séquence standard d’objets cibles de commande, dont l’un est censé avoir un responsable pour la commande. Chaque objet cible de commande consulte sa table des messages pour voir si elle peut traiter le message entrant.
Différentes classes de cibles de commande vérifient leurs propres tables des messages à différents moments. En règle générale, une classe achemine la commande vers certains autres objets pour leur donner la première occasion de la commande. Si aucun de ces objets ne gère la commande, la classe d’origine vérifie sa propre tables des messages. Ensuite, si elle ne peut pas fournir de gestionnaire elle-même, elle peut acheminer la commande vers d’autres cibles de commande. Le tableau Itinéraire de commande standard ci-dessous montre comment chacune des classes structure cette séquence. L’ordre général dans lequel une cible de commande achemine une commande est le suivant :
Vers son objet cible de commande enfant actuellement actif.
vers lui-même ;
Vers d’autres cibles de commande.
Quel est le coût de ce mécanisme de routage par rapport à ce que fait votre gestionnaire en réponse à une commande, le coût du routage est faible. N’oubliez pas que l’infrastructure génère des commandes uniquement quand l’utilisateur interagit avec un objet d’interface utilisateur.
Itinéraire de commande standard
Quand un objet de ce type reçoit une commande. . . | Il se donne à lui-même et à d’autres objets cibles de commande une occasion de gérer la commande dans cet ordre : |
---|---|
Fenêtre frame MDI (CMDIFrameWnd ) |
1. Actif CMDIChildWnd 2. Cette fenêtre frame 3. Application ( CWinApp objet) |
Fenêtre frame de document (CFrameWnd , CMDIChildWnd ) |
1. Affichage actif 2. Cette fenêtre frame 3. Application ( CWinApp objet) |
Afficher | 1. Cette vue 2. Document attaché à la vue |
Document | 1. Ce document 2. Modèle de document attaché au document |
Boîte de dialogue | 1. Cette boîte de dialogue 2. Fenêtre propriétaire de la boîte de dialogue 3. Application ( CWinApp objet) |
Quand les entrées numérotées dans la deuxième colonne du tableau précédent indiquent d’autres objets, tel qu’un document, consultez l’article correspondant dans la première colonne. Par exemple, quand vous lisez dans la deuxième colonne que la vue transfère une commande à son document, consultez l’entrée « Document » dans la première colonne pour suivre le routage.