[C++/MFC] Problème avec une barre de menu

Problème avec une barre de menu [C++/MFC] - C++ - Programmation

Marsh Posté le 19-08-2002 à 11:14:38    

J'ai un problème dans une application MFC lors de la mise à jour d'un menu :
 
c'est une application en SDI et voici la fonction MAJMenu() que j'appelle dés que je veux mettre à jour ma barre de menu (pour griser certaines parties, etc) :
 

Code :
  1. void CMainFrame::MAJMenu()
  2. {
  3. CMenu* cMenu = GetMenu();
  4. if((theApp.m_pProjet->GetUrlFtp()).IsEmpty()) {
  5.  // On grise le menu FTP transfert
  6.  cMenu->EnableMenuItem(ID_TRANSFERT_LANCER, MF_GRAYED);
  7. }
  8. else {
  9.  // On ne le grise plus
  10.  cMenu->EnableMenuItem(ID_TRANSFERT_LANCER, MF_ENABLED);
  11. }
  12. }


J'ai vérifié avec le débugger, on passe bien au bon endroit mais le menu refuse de se griser ???
J'ai essayé en combinant le flag avec MF_BYCOMMAND et ça marche pas mieux. En revanche je peux changer le libellé du menu sinon  (commande ModifyMenu()) mais impossible de le griser même avec cette fonction.
 
Une idée ?


Message édité par Zeux le 19-08-2002 à 11:39:07
Reply

Marsh Posté le 19-08-2002 à 11:14:38   

Reply

Marsh Posté le 19-08-2002 à 11:16:45    

La fonction EnableMenuItem() me retourne 0 ce qui signifie qu'elle a bien réussi à s'effectuer. Je viens aussi d'essayer d'appeler

Code :
  1. CWnd::DrawMenuBar()

juste aprés, pas mieux.


Message édité par Zeux le 19-08-2002 à 11:16:58
Reply

Marsh Posté le 19-08-2002 à 11:21:25    

Visual C++, c pas un langage, le langage, c'est C++
Visual C++, c'est l'IDE. Rien à voir.
 
ensuite, lis mieux la doc, nottament :

These values can be combined by using the bitwise OR operator.


 
d'où à la place de ce que t'as mis:

Code :
  1. if((theApp.m_pProjet->GetUrlFtp()).IsEmpty()) {
  2. // On grise le menu FTP transfert  
  3. cMenu->EnableMenuItem(ID_TRANSFERT_LANCER, MF_BYCOMMAND|MF_GRAYED);
  4. }
  5. else {
  6. // On ne le grise plus  
  7. cMenu->EnableMenuItem(ID_TRANSFERT_LANCER, MF_BYCOMMAND|MF_ENABLED);
  8. }


Qui devrait vachemebt mieux marcher !

Reply

Marsh Posté le 19-08-2002 à 11:22:45    

ha non, dsl, ça changera rien normalement : "MF_BYCOMMAND" est celui par défaut.
Je vois pas trop alors.

Reply

Marsh Posté le 19-08-2002 à 11:24:16    

zeux a écrit a écrit :

La fonction EnableMenuItem() me retourne 0 ce qui signifie qu'elle a bien réussi à s'effectuer. Je viens aussi d'essayer d'appeler

Code :
  1. CWnd::DrawMenuBar()

juste aprés, pas mieux.




 
0, t'as regardé ds la doc ce que ça veut dire ?
ça correspond à la valeur de quoi ? MF_DISABLED, MF_ENABLED, ou MF_GRAYED ?

Reply

Marsh Posté le 19-08-2002 à 11:25:43    

El_Gringo a écrit a écrit :

Visual C++, c pas un langage, le langage, c'est C++
Visual C++, c'est l'IDE. Rien à voir.
 
ensuite, lis mieux la doc, nottament :

These values can be combined by using the bitwise OR operator.


 
Qui devrait vachemebt mieux marcher !




Je vois pas où j'ai écris que VISUAL C++ était un langage mais enfin bon si tu dis que je l'ai marqué quelque part :sarcastic:.  
 
Relis mon post j'ai déjà essayé MF_BYCOMMAND.

Reply

Marsh Posté le 19-08-2002 à 11:26:22    

El_Gringo a écrit a écrit :

 
 
0, t'as regardé ds la doc ce que ça veut dire ?
ça correspond à la valeur de quoi ? MF_DISABLED, MF_ENABLED, ou MF_GRAYED ?



Ca correspond à MF_ENABLED ce qui est logique d'ailleurs.

Reply

Marsh Posté le 19-08-2002 à 11:28:04    

El_Gringo a écrit a écrit :

ensuite, lis mieux la doc, nottament :

These values can be combined by using the bitwise OR operator.

Qui devrait vachemebt mieux marcher !




J'ai lu la doc et relu avant de poster je suis pas complétement idiot.

Reply

Marsh Posté le 19-08-2002 à 11:31:39    

zeux a écrit a écrit :

 
Je vois pas où j'ai écris que VISUAL C++ était un langage mais enfin bon si tu dis que je l'ai marqué quelque part :sarcastic:.  




 
Le titre de ton topic [Visual C++] l'induit...

Reply

Marsh Posté le 19-08-2002 à 11:32:20    

El_Gringo a écrit a écrit :

 
 
Le titre de ton topic [Visual C++] l'induit...




Non absolument pas, ça induit que ca a un rapport avec les MFC. Tu sais ce que c'est les MFC ?

Reply

Marsh Posté le 19-08-2002 à 11:32:20   

Reply

Marsh Posté le 19-08-2002 à 11:33:11    

zeux a écrit a écrit :

 
Relis mon post j'ai déjà essayé MF_BYCOMMAND.




 
J'trouve plus clair de spécifier ds tous les cas si tu est en MF_BYCOMMAND ou en MF_BYOPSITION.
T'as déja essayé d'ailleurs par position !?

Reply

Marsh Posté le 19-08-2002 à 11:35:11    

zeux a écrit a écrit :

 
Non absolument pas, ça induit que ca a un rapport avec les MFC. Tu sais ce que c'est les MFC ?




 
Tu peux utiliser Visual C++ et te passer totalement des MFC. Heureusement d'ailleurs.
Mets plutot [C++/MFC] alors...
Et reste Zen surtout...

Reply

Marsh Posté le 19-08-2002 à 11:37:49    

El_Gringo a écrit a écrit :

 
 
J'trouve plus clair de spécifier ds tous les cas si tu est en MF_BYCOMMAND ou en MF_BYOPSITION.
T'as déja essayé d'ailleurs par position !?




Oui déjà essayé marche pas de toutes façons pas intéressant dans mon cas je veux pas être obligé de gérer les positions des menus parce qu'aprés je serais obligé de me retaper tous les index dés que je rajouterai un menu -> pas intérressant dans ce cas là.
 
En revanche tout de suite aprés ma modif avec enablemenuitem je retrouve bien MF_GRAYED quand j'interroge l'état du menu avec getmenustate.

Reply

Marsh Posté le 19-08-2002 à 11:38:46    

El_Gringo a écrit a écrit :

 
 
Tu peux utiliser Visual C++ et te passer totalement des MFC. Heureusement d'ailleurs.
Mets plutot [C++/MFC] alors...
Et reste Zen surtout...




Sorry mais je me suis senti agressé sur ton premier message, 12 ans que je fais de la prog je connais la diff entre C++ et un IDE merci.
 
Je change le titre du topic. :hello:

Reply

Marsh Posté le 19-08-2002 à 11:39:56    

zeux a écrit a écrit :

 
Oui déjà essayé marche pas de toutes façons pas intéressant dans mon cas je veux pas être obligé de gérer les positions des menus parce qu'aprés je serais obligé de me retaper tous les index dés que je rajouterai un menu -> pas intérressant dans ce cas là.
 
En revanche tout de suite aprés ma modif avec enablemenuitem je retrouve bien MF_GRAYED quand j'interroge l'état du menu avec getmenustate.




 
Ouais, ms pas pour conserver cette façon de faire. Moi qd g un pb sur une fonction, j'essaye toujours de l'utiliser de toutes la manières possibles, même les + tordues desfois. ça me permet souvent d'identifier le pb.

Reply

Marsh Posté le 19-08-2002 à 11:40:28    

Bon ben va falloir que je pioche l'info ailleurs on dirait :(  
 
Sérieux personne n'a eu ce problème déjà ?


---------------
Guerre Dollar - Euro : la chute economique des Etats-Unis avant 2010.
Reply

Marsh Posté le 19-08-2002 à 11:41:02    

El_Gringo a écrit a écrit :

 
 
Ouais, ms pas pour conserver cette façon de faire. Moi qd g un pb sur une fonction, j'essaye toujours de l'utiliser de toutes la manières possibles, même les + tordues desfois. ça me permet souvent d'identifier le pb.




Oui moi aussi c pour ça que je le répète j'ai déjà essayé avec MF_BYPOSITION.


---------------
Guerre Dollar - Euro : la chute economique des Etats-Unis avant 2010.
Reply

Marsh Posté le 19-08-2002 à 11:41:42    

zeux a écrit a écrit :

 
Sorry mais je me suis senti agressé sur ton premier message, 12 ans que je fais de la prog je connais la diff entre C++ et un IDE merci.
 
Je change le titre du topic. :hello:  




 
12 ans de prog !? Mais justement, tu deviens peut être un peu gâteux, non !? :D
(j'vais me prendre des baffes moi !:D)

Reply

Marsh Posté le 19-08-2002 à 11:42:51    

El_Gringo a écrit a écrit :

 
 
12 ans de prog !? Mais justement, tu deviens peut être un peu gâteux, non !? :D
(j'vais me prendre des baffes moi !:D)




Probablement j'ai commencé à 11 ans (en fait mon premier prog à 7 ans mais c'était tellement simple que je compte pas ce que j'ai fait en BASIC de 7 à 11 ans).


---------------
Guerre Dollar - Euro : la chute economique des Etats-Unis avant 2010.
Reply

Marsh Posté le 19-08-2002 à 11:44:39    

Et t'as essayé de mettre MF_DISABLED à la place de MF_GRAYED ?

Reply

Marsh Posté le 19-08-2002 à 11:47:49    

El_Gringo a écrit a écrit :

Et t'as essayé de mettre MF_DISABLED à la place de MF_GRAYED ?




Oui ça donne rien.


---------------
Guerre Dollar - Euro : la chute economique des Etats-Unis avant 2010.
Reply

Marsh Posté le 19-08-2002 à 11:51:31    

zeux a écrit a écrit :

 
Oui ça donne rien.




 
Alors, si t SUR que ID_TRANSFERT_LANCER est bien l'ID de l'item que tu veux griser (j'imagine que tu l'as déja vérifié une 15aine de fois, j'connais ça !), j'ai plus d'idée.
Tout ce que je peux te dire, c que j'utilise cette fonction de cette manière, et ça se passe très bien !
Bonne chance... :hello:

Reply

Marsh Posté le 19-08-2002 à 11:55:42    

El_Gringo a écrit a écrit :

 
 
Alors, si t SUR que ID_TRANSFERT_LANCER est bien l'ID de l'item que tu veux griser (j'imagine que tu l'as déja vérifié une 15aine de fois, j'connais ça !), j'ai plus d'idée.
Tout ce que je peux te dire, c que j'utilise cette fonction de cette manière, et ça se passe très bien !
Bonne chance... :hello:  




C'est bien le bon ID ça c clair d'ailleurs sinon la fonction me retournerait -1 et ca marcherait pas position.
 
C bizarre je trouve aussi  :hello:


---------------
Guerre Dollar - Euro : la chute economique des Etats-Unis avant 2010.
Reply

Marsh Posté le 19-08-2002 à 11:59:16    

Ha, essaye qd même d'appliquer un UpdateWindow à ton CWnd qui contient le menu, après avoir essayé de griser.

Reply

Marsh Posté le 19-08-2002 à 12:19:51    

El_Gringo a écrit a écrit :

Ha, essaye qd même d'appliquer un UpdateWindow à ton CWnd qui contient le menu, après avoir essayé de griser.




Marche po.


---------------
Guerre Dollar - Euro : la chute economique des Etats-Unis avant 2010.
Reply

Marsh Posté le 19-08-2002 à 12:45:29    

Reply

Marsh Posté le 19-08-2002 à 13:19:43    

tu utilises quoi? VC6 ou VC7?


---------------
LOVE & PEACE !!! [:kirvel]
Reply

Marsh Posté le 20-08-2002 à 11:49:50    

try58 a écrit a écrit :

tu utilises quoi? VC6 ou VC7?



6


---------------
Guerre Dollar - Euro : la chute economique des Etats-Unis avant 2010.
Reply

Marsh Posté le 20-08-2002 à 12:13:25    

Je suppose que tu as cree ton menu a partir de l'editeur de ressource. Donc regarde au niveau des options qui sont cochees pour ton menu, peut etre que c'est ca qui fait merder.


---------------
LOVE & PEACE !!! [:kirvel]
Reply

Marsh Posté le 20-08-2002 à 15:22:04    

try58 a écrit a écrit :

Je suppose que tu as cree ton menu a partir de l'editeur de ressource. Donc regarde au niveau des options qui sont cochees pour ton menu, peut etre que c'est ca qui fait merder.




Oui je l'ai créé à partir de l'éditeur de ressources et non j'ai déjà vérifié moult fois ça vient pas de là.
 
Merci kd même  :hello:


---------------
Guerre Dollar - Euro : la chute economique des Etats-Unis avant 2010.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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