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 :

Comment griser un élément d'un menu ?...encore !


Sujet :

MFC

  1. #1
    liv
    liv est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 124
    Points : 41
    Points
    41
    Par défaut Comment griser un élément d'un menu ?...encore !
    Bonjour à tous,

    PS: Je travaille en Visual.NET MFC...sur une boîte de dialogue

    J'ai consulté pas mal de sujet sur les menus sans toutefois trouver la réponse à mon problème qui finalement est tout simple.

    Voilà...je voudrais dégriser un élément de menu !
    J'ai vu que farscape a pas mal répondu à ce sujet mais je n'ai pas trouvé ma réponse.

    Je sais activer ou désactiver mon élément...ça il n'y a pas de problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    BEGIN_MESSAGE_MAP(CToolsDlg, CDialog) 
       //{{AFX_MSG_MAP(CToolsDlg) 
         ON_UPDATE_COMMAND_UI(ID_COURS_CREER, OnUpdateCoursCreer)
       //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    Ensuite je place ma fonction...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void CToolsDlg::OnUpdateCoursCreer(CCmdUI *pCmdUI)
    {
    	pCmdUI->Enable(m_bActive);
    }
    En fonction de ma variable booléenne m_bActive je peux activer/désactiver mon menu...si toutefois celui-ci n'est pas en mode grisé.
    Si mon élément de menu est en mode grisé dès le départ (et donc inactif)...impossible de le dégriser.

    Quelqu'un a une idée ??

    Merci.
    -----
    Liv

  2. #2
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    si j'ai bien compris ton pb , je dirais que la variable m_bActive doit etre initialisée avec la valeur de depart (griser ou non ) du menu .

  3. #3
    liv
    liv est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 124
    Points : 41
    Points
    41
    Par défaut
    Salut à toi,

    En fait...ma variable au départ est initialisée à false.
    Lorsque ma variable est à false, mon élément de menu doit être grisé...et inversement bien sûr.

    Au cours de mon programme, sur un appel de fonction par exemple...ma variable passe à true et mon menu doit être dégrisé.

    Tu vois?
    -----
    Liv

  4. #4
    liv
    liv est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 124
    Points : 41
    Points
    41
    Par défaut
    en fait j'ai remarqué que si je grise mon élément de menu dès le départ (par la fenêtre de propriété de Visual de mon élément) je n'ai plus aucun contrôle dessus. Ce qui est normal en fait.

    Ca ne me convient pas de pouvoir activer ou désactiver mon élément de menu...ce que j'aimerais faire c'est le griser ou le dégriser car cette propriété inclus l'activation/désactivation par définition.

    Je voudrais que cette activation/désactivation soit visuelle.
    -----
    Liv

  5. #5
    liv
    liv est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 124
    Points : 41
    Points
    41
    Par défaut
    Bon...j'ai trouvé la solution...c tout con !

    Avec ces lignes de code vous pouvez donner à tout moment n'importe quelle propriété à vos éléments de menu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //On récupère le menu de la dlg
    CMenu* mmenu = GetMenu();
    //On spécifie sur quel sous menu (n° de la colonne) on va définir les propriétés
    CMenu* submenu = mmenu->GetSubMenu(1);
    //On définit les propriétés du sous-menu en question
    submenu->EnableMenuItem(ID_COURS_CREER, MF_ENABLED);
    -----
    Liv

  6. #6
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    re,
    Le système par défaut de mise a jour des menus par le système ON_UPDATE_COMMAND_UI se fait au moment où le menu est rafraîchi.
    Donc au moment où l’utilisateur affiche le menu, le message ON_UPDATE_COMMAND_UI est envoyé pour récupérer le statut de l’item menu en cours d’affichage.
    Conditionné dans ton cas par une variable booléenne.
    De ce fait je ne comprends pas trop ton problème.
    Voir aussi l’article dans la faq qui montre un autre mode de fonctionnement permettant de modifier les propriétés en dehors du mécanisme standard .
    http://c.developpez.com/faq/vc/?page...isableItemMenu

  7. #7
    liv
    liv est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 124
    Points : 41
    Points
    41
    Par défaut
    L'article de la FAC explique ce que j'ai trouvé ailleurs...C exactement ce que je cherchais.

    Merci à toi.
    -----
    Liv

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment déactiver un élément d'un menu?
    Par NABIL74 dans le forum Débuter
    Réponses: 2
    Dernier message: 03/12/2008, 10h55
  2. Réponses: 3
    Dernier message: 13/07/2007, 22h09
  3. Comment griser un menu
    Par estelle84 dans le forum wxWidgets
    Réponses: 4
    Dernier message: 21/01/2007, 12h20
  4. Activer / griser les éléments d'un menu
    Par Silverstone dans le forum Visual C++
    Réponses: 4
    Dernier message: 04/11/2006, 23h16
  5. Comment griser un élément d'une ComboBox?
    Par kramer dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/04/2006, 20h43

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