Impossible de cocher un élément de mon menu (MFC)

Impossible de cocher un élément de mon menu (MFC) - C++ - Programmation

Marsh Posté le 10-06-2005 à 11:47:44    

Bonjour, j'ai un problème qui a l'air tout con, mais que je n'arrive pas à régler depuis ce matin...
 
J'ai une application en MFC avec un menu (IDR_MENU1) tout ce qu'il y a de plus normal et qui fonctionne bien, mais impossible de cocher un élément du menu au moment où il est sélectionné!  :sweat:  
 
C'est en théorie très simple à faire à l'aide du Update_Command_UI, mais là ça ne marche pas. La fonction est bien appelée automatiquement, mais c'est comme si ma commande SetCheck tapait dans le vide!
 

Code :
  1. void CSAGADlg::OnUpdateAffichageMaxMini(CCmdUI* pCmdUI)
  2. {
  3.    pCmdUI->SetCheck(true);
  4. }


 
J'ai essayé en rajoutant du UpdateData (true ou false) et ça ne change rien...
 
Pouvez vous éclairer ma lanterne là?


Message édité par Alkor2001 le 10-06-2005 à 12:33:45

---------------
J'aime pas Apple...
Reply

Marsh Posté le 10-06-2005 à 11:47:44   

Reply

Marsh Posté le 10-06-2005 à 15:50:29    

:bounce: ça m'énerve d'être bloqué par un tel problème, surtout que la solution doit être toute simple...


---------------
J'aime pas Apple...
Reply

Marsh Posté le 11-06-2005 à 21:02:37    

:bounce:


---------------
J'aime pas Apple...
Reply

Marsh Posté le 11-06-2005 à 22:25:56    

ton menu, c'est un menu popup (qui apparait avec le bouton droit de la souris) ou un menu déroulant ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 11-06-2005 à 23:40:19    

Je pense que c'est ce qu'on appelle un menu déroulant... C'est le bon vieux menu "Fichier   Editer   Affichage..." qu'on retrouve dans la plupart des programmes...
 
Ce qui m'étonne c'est que le OnUpdateCommandUI est bien appelé (il affiche bien les MessageBox que je mets dedans), mais qu'il ne semble pas bien repérer sa source, puisque toutes les commandes permettant de cocher cet élément du menu, d'en afficher le texte ou de le changer restent sans effet. Et là je ne vois vraiment pas quoi faire...


---------------
J'aime pas Apple...
Reply

Marsh Posté le 13-06-2005 à 09:23:31    

C'est bon, problème résolu de façon plutôt barbare, à l'aide de
 

Code :
  1. CMenu * menu = GetMenu();
  2. menu->CheckMenuItem(ID_AFFICHAGE_MAX_MINI,MF_CHECKED);
  3. free(menu);


 
appelé lors du clic sur le sous menu...


---------------
J'aime pas Apple...
Reply

Marsh Posté le 13-06-2005 à 09:26:49    

Alkor2001 a écrit :

C'est bon, problème résolu de façon plutôt barbare, à l'aide de
 

Code :
  1. CMenu * menu = GetMenu();
  2. menu->CheckMenuItem(ID_AFFICHAGE_MAX_MINI,MF_CHECKED);
  3. free(menu);


 
appelé lors du clic sur le sous menu...


c'est quoi ce free() ? :heink:
totalement inutile, ton CMenu appellera son destructeur à la fin de la fonction.
 
par contre, dans la classe CCmdUI, tu as le membre m_pMenu qui te renvoie un pointeur vers le CMenu qui y est rattaché, c'est plus propre que GetMenu()


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-06-2005 à 18:00:29    

Ok, merci bien de tes conseils...
 
Pour le free ça me semblait utile là, mais je te fais confiance si tu me dis que ça ne sert à rien!  :D


---------------
J'aime pas Apple...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed