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 :

cocher un element sur un menu


Sujet :

MFC

  1. #1
    Invité
    Invité(e)
    Par défaut cocher un element sur un menu
    salut à tous,

    dans mon appli, j'utilise un menu contextuel, tout ce qu'il y a de plus simple. Or je n'arrive pas à cocher ou décocher un élément sur ce menu.
    Pourtant ,j'utilise bien l'evenement COMMAND_UI avec setCheck mais l'affichage ne se met jamais à jour.

    je suppose que ce doit etre une petite option, mais pas moyen de trouver.

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 79
    Par défaut
    http://c.developpez.com/faq/vc/?page...tCheckMenuItem

    Il n'y a à priori rien d'autre à ajouter...
    Je viens de tester sur une SDI et ca marche nickel sans option particulière:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    //gestion du menu
    void CTestView::OnContextMenu(CWnd* pWnd, CPoint point) 
    {
     
    	CMenu menu;
    	CWindowDC DC(this);
     
     
    	menu.LoadMenu(IDR_TESTMENUCTXT);
    	CMenu *pContextMenu=menu.GetSubMenu(0);
    	pContextMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON,
    	point.x,point.y,
    	AfxGetMainWnd());
    	return;
     
    }
     
    /*à l'affichage de la fenêtre, je contrôle la valeur d'un booléan (variable publique membre de ma CView) qui indique l'état de ma ligne de menu.Si true, je coche la case*/
    void CTestView::OnUpdateTest1(CCmdUI* pCmdUI) 
    {
    	pCmdUI->Enable(true);
    	if (bIsChecked) { pCmdUI->SetCheck(true); }
    	else			{ pCmdUI->SetCheck(false);}
    }
     
    //évènement clic sur la ligne du menu. Met le booléan à l'inverse de son
    //état actuel
    void CTestView::OnTest1() 
    {
    	if (bIsChecked) { bIsChecked=false;}
    	else { bIsChecked=true;}
    }

  3. #3
    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
    Cocher un élément de menu ordinaire et un menu contextuel est un peu différent.

    Pour le menu contextuel voici un exemple simple

    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
    17
    18
    19
    20
    21
     
    // Dans le gestionnaire WM_RBUTTONUP
     
    CMenu aMenu;
     
    if( !aMenu.LoadMenu(IDR_MY_MENU)  )
          return;
     
    CMenu* pSubMenu = aMenu.GetSubMenu(0);
     
     // m_bChecked,  vous pouver utiliser n'importe quoi pour sauvegarder l'état du check
     
    if(m_bChecked)
          aMenu.CheckMenuItem(ID_ITEM_MENU1, MF_CHECKED | MF_BYCOMMAND);
    else
          aMenu.CheckMenuItem(ID_ITEM_MENU1, MF_UNCHECKED | MF_BYCOMMAND);
     
    CPoint point;    // si je ne dispose pas des coordonnées du point
    GetCursorPos(&point);  // j'appelle cette fonction.
    pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this, 0);
    //...

  4. #4
    Invité
    Invité(e)
    Par défaut
    merci beaucoup de vos reponses

    il me manquait tout simplement cela :

    if(m_bChecked)
    aMenu.CheckMenuItem(ID_ITEM_MENU1, MF_CHECKED | MF_BYCOMMAND);
    else
    aMenu.CheckMenuItem(ID_ITEM_MENU1, MF_UNCHECKED | MF_BYCOMMAND);

    encore un pb resolu

  5. #5
    Invité
    Invité(e)
    Par défaut
    j'ai encore un petit souci du meme type

    je voudrais faire la meme chose mais sur un menu qui se trouve en haut de ma dialog box.

    donc je ne gere pas son instanciation.

    la fonction setcheck ne fait pas de coche.

    quelqu'un sait comment faire ?

Discussions similaires

  1. [vb6] Savoir Si On A Clique Sur Un Menu
    Par ykamenski dans le forum Windows
    Réponses: 2
    Dernier message: 23/06/2006, 11h53
  2. rajouter une item sur le menu contextuel click droit
    Par sony351 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 23/02/2006, 14h19
  3. Probleme sur creation menu popup
    Par biloute2121 dans le forum MFC
    Réponses: 1
    Dernier message: 11/01/2006, 08h41
  4. nombreux problèmes sur mon menu de gauche
    Par pp51 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 12/12/2005, 21h00
  5. boutons avec images sur un menu
    Par ENDAMA NDONG dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/11/2005, 11h30

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