[MFC] Griser menu déroulant

Signaler
Messages postés
50
Date d'inscription
dimanche 28 décembre 2003
Statut
Membre
Dernière intervention
11 avril 2006
-
Messages postés
35
Date d'inscription
lundi 6 décembre 2004
Statut
Membre
Dernière intervention
14 juin 2008
-
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

Messages postés
60
Date d'inscription
mercredi 3 mars 2004
Statut
Membre
Dernière intervention
24 septembre 2004

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
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
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.
Messages postés
50
Date d'inscription
dimanche 28 décembre 2003
Statut
Membre
Dernière intervention
11 avril 2006
1
coooool ca marche :)
merci bcp ymca2003 ... j'viens d'apprendre quelque chose la :)
Messages postés
14
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
29 juillet 2005

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);
Messages postés
35
Date d'inscription
lundi 6 décembre 2004
Statut
Membre
Dernière intervention
14 juin 2008

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