[MFC] Griser menu déroulant

Atmaweapon Messages postés 50 Date d'inscription dimanche 28 décembre 2003 Statut Membre Dernière intervention 11 avril 2006 - 7 juin 2004 à 19:41
cs_bordeaux Messages postés 35 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 14 juin 2008 - 8 mars 2006 à 03:23
J'ai deux questions (dont une qui est 'facultative' a la limite...)
Je travaille dans une MFC et ai un menu déroulant (dans le Menu de mon IDR_MAINFRAME) ...
MonMenu
SousMenu1
SousMenu2

Les éléments de la popup du menu déroulant ont un ID que je leur ai donné ... on va dire ID_ELEM_MENU1 et ID_ELEM_MENU2
Ce que je voudrais faire, dans un premier temps, c'est de griser certains éléments de mon menu déroulant (SousMenu1 par exemple...)...
j'ai pas mal cherché sur le forum... en vain...
note: je ne travaille pas dans une DlgBox ... donc le SendDlgMessage ne marche pas je pense... (il y aurait un équivalent ?)

Dans un deuxieme temps (mais ca a la limite je m'en fiche...), ce que j'aimerais faire serait carrément griser le menu lui meme (griser 'MonMenu') ... mais étant donné que VC6 ne me permet pas de lui attribuer d'ID je sais pas trop si c'est possible...

merci d'avance pour vos réponses :)

5 réponses

batrasog Messages postés 60 Date d'inscription mercredi 3 mars 2004 Statut Membre Dernière intervention 24 septembre 2004
7 juin 2004 à 20:22
pour griser un élement , tu peux faire au début :
AppendMenu (Sousmenu , MF_STRING| MF_GRAYED, IDM_TEST , "ce choix ne va pas être possible");

pour après le changer avec
BOOL ModifyMenu() ;
ou le contraire

je te conseille de regarder les tutoriaux de errikke (très interresant )

pour la 2eme questions je sais pas trop ...

batrasog
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
7 juin 2004 à 23:34
sous MFC, pour activer/désactiver, cocher/décocher un item de menu, il faut ajouter une fct spéciale qui va le faire.

Normalement, pour traiter une commande associeé à un menu, tu va dans le classwizard, tu sélectionne la classe responsable du traitement, tu sélection ton ID et du sélectionne COMMAND et AddFunction.

Si tu regarde bien tu as également la posiblité de rajouter une fonction associé à UPDATE_COMMAN_UI. C'est cette fct qui va te permettre de gérer la commande.

dans la fct généré, tu as un paramètre pCmdUI qui te permet activer/désactiver, cocher/décocher. Cette fct est appelée par l'infrastructure MFC à chaque fois que le menu doit être affiché. à toi donc de faire ce qu'il faut en fonction de l'état de ton application.
0
Atmaweapon Messages postés 50 Date d'inscription dimanche 28 décembre 2003 Statut Membre Dernière intervention 11 avril 2006 1
8 juin 2004 à 08:01
coooool ca marche :)
merci bcp ymca2003 ... j'viens d'apprendre quelque chose la :)
0
zouippy Messages postés 14 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 29 juillet 2005
30 juil. 2005 à 17:43
Ou sinon...

Pour griser:
CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(0);
submenu->EnableMenuItem(ID_FICHIER_ENREGISTRER, MF_GRAYED);

Et dégriser:
CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(0);
submenu->EnableMenuItem(ID_FICHIER_ENREGISTRER, MF_ENABLED);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bordeaux Messages postés 35 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 14 juin 2008
8 mars 2006 à 03:23
Excusez moi, mais je n'ai pas tres bien compris comment faire?

Moi j'utilise VS.net
J'ai un element du menu qui s'appelle IDM_ARRETER
et je voudrais le griser. Comment faut-il faire?

Stef
0
Rejoignez-nous