cs_Buzu
Messages postés68Date d'inscriptionvendredi 9 mai 2003StatutMembreDernière intervention14 septembre 2007
-
17 janv. 2005 à 10:41
Khoral
Messages postés11Date d'inscriptionvendredi 19 septembre 2003StatutMembreDernière intervention 2 mai 2007
-
7 juin 2005 à 09:23
Salut je voudrai savoir comment on fait pr q qd on clique sur Affichage" par exemple, si on sélectionne ce kon veu afficher, il y ai une coche qui se mette devant pour dire q c validé.
Exemple : Affichage - Barre d'état .
Merci a ceux ki répondront
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 17 janv. 2005 à 11:46
Dans le classwizzard, lorsque tu veux associer une commande à un item de menu, tu sélectionne la classe cible, l'id de menu et ON_COMMAND. Dans la fonction générée, tu fait l'éxcution de la commande (et tu sauvegarde dans une variable l'état dans lequel tu es) Pour cocher ou désactiver cette commande, il suffit de faire la même chose mais cette fois il faut choisir ON_UPDATE_COMMAND_UI. Dans la fonction générée tu as un pointeur passé en paramètre avec lequel tu peux appeler les fonction SetCheck et Enable.
Khoral
Messages postés11Date d'inscriptionvendredi 19 septembre 2003StatutMembreDernière intervention 2 mai 2007 19 avril 2005 à 16:22
Salut
J'ai exactement le même problème que Buzu, à savoir que j'aimerais mettre une coche à côté de l'item menu sélectionné.
J'ai essayé avec le SetCheck et le Enable, mais aucun des deux ne
fonctionne (j'ai aussi essayé le SetText pour vérifier, il ne
fonctionne pas non plus).
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 19 avril 2005 à 17:46
Rajoute le ON_COMMAND c'est peut-être la cause (quand il n'y a pas de gestion de la commande le framework MFC désactive entièrement la commande de menu et du coup n'appelle peut-être pas OnUpdate).
Khoral
Messages postés11Date d'inscriptionvendredi 19 septembre 2003StatutMembreDernière intervention 2 mai 2007 20 avril 2005 à 09:12
Merci pour ta réponse.
J'ai essayé de remplir le ON_COMMAND, ça ne marche toujours pas (le ON_COMMAND fonctionne bien, mais toujours pas le SetCheck).
Une autre petite précision, peut-être utile : j'ai remarqué qu'on
pouvait choisir la classe dans laquelle mettre les ON_COMMAND et
ON_UPDATE, je les ai mis dans la classe se terminant par Dlg, est-ce
juste ? Si je les mets dans la classe se terminant par App, il me sort
quelques erreurs (sur GetDlgItem et UpdateData).
Vous n’avez pas trouvé la réponse que vous recherchez ?
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 20 avril 2005 à 09:51
Le OnUpdate ne fonctionne pas avec les Dialogs car cela est géré par la classe CFrameWnd et ses descendant or CDialog dérive directement de CWnd donc la gestion des menus dans un dialog n'est pas la même. Et avec les MFCs je ne sais plus comment il faut faire (peut-etre faire un GetMenu et cocher directement l'item)
Khoral
Messages postés11Date d'inscriptionvendredi 19 septembre 2003StatutMembreDernière intervention 2 mai 2007 20 avril 2005 à 10:26
Je me réponds à moi-même ^^
Alors, la solution que je cite dans mon post précédent est *presque* la bonne. Je m'explique.
En suivant les conseils donnés sur le lien et sur MSDN, je peux utiliser le SetCheck, jusque là aucun problème.
Mais comment savoir si le menu est déjà coché ou pas ? De plus, pour
mon application, le menu déroulant donne 4 possibilités, toutes
exclusives l'une de l'autre (si on en choisit une, la précédente se
décoche).
Auriez-vous une idée pour régler ces 2 problèmes ?
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 20 avril 2005 à 11:34
GetMenuState de CMenu devrait te donner l'état de l'item. L'autre solution c'est de sauveagrder toi même dans une variable quel est le menu que tu as coché la dernière fois.
Khoral
Messages postés11Date d'inscriptionvendredi 19 septembre 2003StatutMembreDernière intervention 2 mai 2007 21 avril 2005 à 09:40
Bon j'ai parlé trop vite (c'est tout moi ça ^^).
Pour info, j'ai finalement pris CMenu::CheckMenuRadioItem, qui permet
de regrouper plusieurs options menu pour qu'elles ne soient jamais
cochées en même temps.
Voici mon code :
CMenu affichage ;
affichage.LoadMenu(IDR_MENU1) ; // Marche jusque là
affichage.CheckMenuRadioItem(ID_AFFICHAGE_KP,ID_AFFICHAGE_PRESSIONS,ID_AFFICHAGE_KPCORDE,MF_BYCOMMAND);
Voici le menu, c'est le seul dans toute l'application :
La ligne du CheckMenuRadioItem me renvoit 0, donc une erreur, et quand
j'essaye de l'intercepter avec GetLastError, il me dit Erreur
0:Opération réussie, donc ça ne m'avance pas beaucoup :/
Je précise que je suis avec Visual C++ 6, et que je n'ai donc pas le
même prototype pour cette fonction que celui décrit sur la MSDN
actuelle (je ne peux pas mettre un handler en premier paramètre, le
reste est inchangé).
La description du forum dit qu'il est réservé aux personnes au bord du suicide, je crois que j'en suis pas loin...
gabeuskadi
Messages postés4Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention 2 juin 2005 6 juin 2005 à 18:06
Au lieu de :
CMenu affichage ;
affichage.LoadMenu(IDR_MENU1) ;
affichage.CheckMenuRadioItem(ID_AFFICHAGE_KP,ID_AFFICHAGE_PRESSIONS,ID_AFFICHAGE_KPCORDE,MF_BYCOMMAND);
tu mets :
CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(2); // ici 2 désigne le sous-menu concerné : à toi de mettre le bon paramètre
submenu->CheckMenuRadioItem(ID_VUE1, ID_VUE2,nID, MF_BYCOMMAND);