IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[ MFC ] Menu popup


Sujet :

MFC

  1. #1
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut [ MFC ] Menu popup
    Bonjour,

    je voudrais savoir comment, avec un menu contextuel, mettre à jour les items de ce menu ( coché/décoché ) comme on peut le faire avec un menu classique.
    En effet, lorsque je prends en compte un ON_UPDATE_COMMAND_UI dans la table des messages, je n'arrive pas à faire un pCmdUI->SetCheck(1) alors que ça fonctionne avec un menu de la barre des menus.

    Merci d'avance.

  2. #2
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    ça n'a pas l'air d'inspirer grand monde.....

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    tu passes dans le message ON_UPDATE_COMMAND_UI ?
    comment tu géres le check ?

  4. #4
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    Salut,

    Oui, car je fait un MessageBox pr bien décomposer les étapes et je me rends compte qu'il y passe.

    De plus:
    Le même menu, je l'ai mis en contextuel et, en fixe dans la barre des menus.
    les modifs - coche/décoche - sont bien prises en compte dans le fixe alors que dans le contextuel, il n' y a aucune mise à jour ( je sais pas si je me fais bien comprendre ).

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    sauf si ton menu est dans une Boite de dialogue ,le SetCheck dans un menu popup fonctionne bien...

  6. #6
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    J'oubliais...

    Pr gérer le Check, je me base sur une variable membre de ma classe.
    Quand elle est à -1, pCmdUI->SetCheck(1), quand elle est à +1, pCmdUI->SetCheck(0);

  7. #7
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    essaye de faire un SetCheck(1) en 'dur' pour voir si la coche apparait bien....

  8. #8
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    En fait, qd je fais les deux, le fixe est pour une CTreeView mais c'est juste pr le test.
    Au final, il ne doit y avoir que le contextuel. Il apparaît lors d'un clic droit sur un item du TreeView. Les commandes répondent bien, c'est juste la mise à jour qui coince. Je la traite exactement comme je la traiterai pr un menu fixe, c'est peut-être là mon erreur...

  9. #9
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    le pCmdUI->SetCheck(1) en dur ( dans le "OnUpdateUI" ) ne donne rien.

    Je me demande si ces mises à jour ne fonctionne pas uniquement pr des menus fixes; ces derniers n'auraient-ils pas un pointeur enregistré qque part qui permet de les retrouver et de leur ajouter une coche avec un CCmdUI ?

  10. #10
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    Pour un menu contextuel, voici un extrait d'un de mes codes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    			CListCtrl& ThisListCtrl = GetListCtrl();
    			DWORD style = ThisListCtrl.GetStyle();
    			pSubMenu->CheckMenuItem(ID_LISTVIEWSTYLE_L,  MF_UNCHECKED | MF_BYCOMMAND);
    			pSubMenu->CheckMenuItem(ID_LISTVIEWSTYLE_I,  MF_UNCHECKED | MF_BYCOMMAND);
    			pSubMenu->CheckMenuItem(ID_LISTVIEWSTYLE_D,  MF_UNCHECKED | MF_BYCOMMAND);
    			pSubMenu->CheckMenuItem(ID_LISTVIEWSTYLE_M,  MF_UNCHECKED | MF_BYCOMMAND);
     
    			if((style & LVS_LIST) == LVS_LIST)
    				pSubMenu->CheckMenuItem(ID_LISTVIEWSTYLE_L,  MF_CHECKED | MF_BYCOMMAND);
    			else if((style & LVS_SMALLICON) == LVS_SMALLICON)
    				pSubMenu->CheckMenuItem(ID_LISTVIEWSTYLE_I,  MF_CHECKED | MF_BYCOMMAND);
    			else if((style & LVS_REPORT) == LVS_REPORT)
    				pSubMenu->CheckMenuItem(ID_LISTVIEWSTYLE_D,  MF_CHECKED | MF_BYCOMMAND);
    			else
    				pSubMenu->CheckMenuItem(ID_LISTVIEWSTYLE_M,  MF_CHECKED | MF_BYCOMMAND);

  11. #11
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    ok, merci

    je vais essayer de tester dans cette direction.

  12. #12
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    Lors de la prise en compte d'un clic droit avec la fonction suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void CMenuView::OnRButtonDown(UINT nFlags,CPoint point)
    {
    <div style="margin-left:40px">
    ClientToScreen(&point);
    CMenu aMenu;
    aMenu.LoadMenu(IDR_CONTEXT);
    aMenu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
    aMenu.CheckMenuItem(ID_MENU1,MF_CHECKED|MF_BYCOMMAND);
    // etc etc.</div>}
    Je n'arrive pas a obtenir la coche sur l'item souhaité. Est-ce que je m'y prends comme il faut ?

  13. #13
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    J'ai rien dit.
    Il faut mettre checkMenuItem avant TrackPopupMenu.

    Par contre, je commence à douter sur le fait qu'on puisse faire du ON_UPDATE_COMMAND_UI sur du menu popup...

    Si quelq'un a un exemple, je suis preneur.

Discussions similaires

  1. [MFC] Menu dynamique
    Par barthelv dans le forum MFC
    Réponses: 7
    Dernier message: 31/05/2005, 10h44
  2. [MFC] Menu système d'un dialog box
    Par tonyskn dans le forum MFC
    Réponses: 2
    Dernier message: 24/05/2004, 21h50
  3. Réponses: 3
    Dernier message: 24/05/2004, 16h20
  4. [MFC]Menu systeme EnableMenuItem()
    Par Geraldvi dans le forum MFC
    Réponses: 7
    Dernier message: 19/01/2004, 21h58
  5. Comment créer un menu popup style XP ?
    Par chaours dans le forum Composants VCL
    Réponses: 4
    Dernier message: 29/09/2003, 09h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo