Routage de commandes
La responsabilité lorsque vous utilisez des commandes est limitée à l'établissement de connexions pour les mappages de messages entre les commandes et leurs fonctions, une tâche pour lesquelles vous utilisez la fenêtre Propriétés. Vous devez également écrire la plupart des gestionnaires de commandes.
Les messages windows sont généralement envoyés dans la fenêtre cadre principale, mais les messages de commande sont ensuite routés à d'autres objets. Il est prévu que l'infrastructure achemine les commandes via une séquence standard d'objets cibles de la commande, dont l'un est un responsable de la commande. Chaque objet de la cible de la commande active la table des messages pour voir s'il peut traiter le message entrant.
Les différentes classes de cible de la commande activent leurs propres tables des messages à des moments différents. En général, une classe route la commande à certains 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 son propre mappage de message. Ensuite, s'il ne peut pas fournir un gestionnaire lui-même, il peut aiguiller la commande à plus de cibles de la commande. La table Itinéraire standard de commande au-dessous de l'attribut indique comment chaque classe structure cette séquence. L'ordre général dans laquelle une cible commandée guide une commande est :
À son actuellement actif objet enfant actif de cible de la commande.
À lui-même.
D'autres cibles de la commande.
Quel est le coût du mécanisme de routage ? Comparé à ce que le gestionnaire fait en réponse à une commande, le coût de routage est insuffisant. Considérez que l'infrastructure génère des commandes uniquement si l'utilisateur interagit avec un objet d'interface utilisateur.
Routage des commandes standart
Lorsqu'un objet de ce type accepte une commande. . . |
Il se donne à lui-même et une autre cible de la commande objet une chance de gérer la commande dans cet ordre. |
---|---|
Fênetre cadre MDI (CMDIFrameWnd) |
|
fenêtres frame de document (CFrameWnd, CMDIChildWnd) |
|
Vue |
|
Document |
|
Boîte de dialogue |
|
Où sont comptés les entrées dans la deuxième colonne de la mention précédente de la table d'autres objets, tel qu'un document, consultez l'élément correspondant dans la première colonne. Par exemple, lorsque vous lisez dans la deuxième colonne de la vue qu'elle envoie une commande de documents, consultez l'entrée « document » dans la première colonne pour suivre le routage ultérieur.