Partager via


Quand les gestionnaires de mise à jour sont-ils appelés ?

Supposons que l’utilisateur clique sur la souris dans le menu Fichier, ce qui génère un message WM_INITMENUPOPUP. Le mécanisme de mise à jour de l’infrastructure met collectivement à jour tous les éléments du menu Fichier avant la suppression du menu afin que l’utilisateur puisse le voir.

Pour ce faire, l’infrastructure route les commandes de mise à jour pour tous les éléments de menu du menu contextuel le long du routage des commandes standard. Les cibles de commande sur le routage ont la possibilité de mettre à jour tous les éléments de menu en correspondant à la commande de mise à jour avec une entrée de carte de messages appropriée (du formulaire ON_UPDATE_COMMAND_UI) et en appelant une fonction « gestionnaire de mises à jour ». Ainsi, pour un menu avec six éléments de menu, six commandes de mise à jour sont envoyées. Si un gestionnaire de mises à jour existe pour l’ID de commande de l’élément de menu, il est appelé pour effectuer la mise à jour. Si ce n’est pas le cas, l’infrastructure case activée pour l’existence d’un gestionnaire pour cet ID de commande et active ou désactive l’élément de menu selon les besoins.

Si l’infrastructure ne trouve pas d’entrée ON_UPDATE_COMMAND_UI pendant le routage des commandes, elle active automatiquement l’objet d’interface utilisateur s’il existe une ON_COMMAND entrée quelque part avec le même ID de commande. Sinon, il désactive l’objet d’interface utilisateur. Par conséquent, pour vous assurer qu’un objet d’interface utilisateur est activé, fournissez un gestionnaire pour la commande que l’objet génère ou fournissez un gestionnaire de mises à jour pour celui-ci. Consultez la figure de la rubrique Objets d’interface utilisateur et ID de commande.

Il est possible de désactiver la désactivation par défaut des objets d’interface utilisateur. Pour plus d’informations, consultez le m_bAutoMenuEnable membre de classe CFrameWnd dans la référence MFC.

L’initialisation du menu est automatique dans l’infrastructure, se produisant lorsque l’application reçoit un message WM_INITMENUPOPUP. Pendant la boucle inactive, l’infrastructure recherche le routage des commandes pour les gestionnaires de mises à jour de bouton de la même façon que pour les menus.

Voir aussi

Guide pratique pour mettre à jour des objets d’interface utilisateur