Dans Visual Studio, les boutons de la barre d'outils MFC sont mis à jour par ON_UPDATE_COMMAND_UI
qui est envoyé pendant la période d'inactivité. Je suppose que ce mécanisme est bogué si je change l'état d'activation/désactivation du bouton en ON_UPDATE_COMMAND_UI
gestionnaire.
En particulier :
Supposons que le bouton soit maintenant activé. À un certain moment, le code "veut" que le bouton soit désactivé (et ne doit évidemment pas être cliqué par l'utilisateur), mais le bouton sera réellement désactivé à la prochaine période d'inactivité, comme le montre la figure suivante :
Dans la zone rouge de la figure, l'état du code est, à mon avis, instable et le développeur doit gérer cet état instable en vérifiant manuellement l'état du bouton. Je ne sais pas si j'ai manqué quelque chose ou si j'ai mal compris ce mécanisme ?
PS : La procédure pour le menu est correcte. Elle appelle toujours ON_UPDATE_COMMAND_UI
et vérifie l'état du bouton avant que ON_COMMAND
gestionnaire.
Ma question est de savoir comment faire pour que le ON_UPDATE_COMMAND_UI
soit appelé avant que ON_COMMAND
comme le font les Menus ?