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 :

Menu : trouvé l'ID appelant une fonction


Sujet :

MFC

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Par défaut Menu : trouvé l'ID appelant une fonction
    Bonjour,

    voila, j'ai un menu que je créé dynamiquement,

    j'ai besoin de lier tout les items à une seule fonction :

    [MENU]
    - LANGUE
    - Francais
    - English
    ...... (dynamique)
    - QUITTER

    je voudrai lier donc tous les clics sur les différentes langues vers une seule fonction, mais il faut que je sache laquelle a été cliqué,

    comment dois je m'y prendre ?

    merci bien

    [edit]
    j'ai bien tenté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    BEGIN_MESSAGE_MAP(CDigitickDlg, CDialog)
       ON_COMMAND(ID_LANGUE_FRAN, OnLangueClick(1))
     
     
    void CAppsDlg::OnLangueClick(int i)
    mais non ... apparemment, on peut pas mettre de paramettre dans ON_COMMAND

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Par défaut
    personne n'a d'idee ?

    je seche vraiment la, et ca, jpeux pas faire autrement !

    j'en ai vraiment besoin

    un piste please !!

  3. #3
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    avoir une seule fonction OnLangueClick(int i)
    et dans le cas ID_LANGUE_FRAN, tu appelles une méthode OnFranClick qui appelle OnLangueClick(0)
    pour ID_LANGUE_US, tu appelles une méthode OnUsClick qui appelle OnLangueClick(1)

    etc ...

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Par défaut
    oui, mais le probleme reste le meme,

    ne savant pas combien de sous menu je vais avoir,

    je ne peux pas creer en fixe les fonctions OnFranClick , OnUsClick, ...

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Par défaut
    jsuis en train d'essayer de piger la faq de farscape

    http://c.developpez.com/faq/vc/?page...nDynamicButton

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    ok, j'avais pas compris, je te renvois vers là http://c.developpez.com/faq/vc/?page...nDynamicButton

    [edit] arff, pas mieux

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Par défaut
    lol

    jsuis dedans je lis .....

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Par défaut
    2 questions :

    1)
    BN_CLICKED c'est pour un bouton, pour un menu, ca marche aussi ou pas ?
    je cherche par ici mais jvois pas lequel autre pourrais être celui du menu

    2)
    Imaginons que la plage dynamique des Id des boutons soit de 1000 à 2000 on aura :
    je créé mes sous menu comme ceci moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	CMenu *pMenu = GetMenu(), *pContMenu = pMenu->GetSubMenu(0), *pLangMenu = pContMenu->GetSubMenu(0);
    	CString csIdent[MAX_NBR_LANG_FILE];
    .........
    	for(i=0; i<nbFL; i++)
    		pLangMenu->AppendMenu(MF_STRING, NULL, csIdent[i]);
    comment je peux preciser l'id que je veux dedans ?
    comme ceci (purement au pif) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	for(i=0; i<nbFL; i++)
    		pLangMenu->AppendMenu(MF_STRING, 1000+i, csIdent[i]);
    [edit] Apparement, ca marche !
    autant pour la question 1 que pour la 2

    merci

  9. #9
    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
    oui c'est ce que je t'avais indiqué dans un post precedent.

  10. #10
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Par défaut
    une derniere question vis à vis de ces menus,

    j'ai rajouté le code de ta faq,

    et dans le fonction appelé lors du clic sur un sous menu,
    je veux recupérer le texte du sous menu sélectionné,

    je tente alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     GetDlgItem(nID)->GetWindowText (csTexte);
    Unhandled exception at 0x7c22e1cc (mfc71d.dll) in Digitick.exe: 0xC0000005: Access violation reading location 0x00000020.
    pourquoi ca marche pas ca alors que le meme code sur l'id d'un static texte fonction ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetDlgItem(IDC_STATIC1)->GetWindowText(csTexte);

  11. #11
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Par défaut
    j'ai beau tenter ca :

    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
    void CDigitickDlg::OnLanguageSelected(UINT nID)
    {
    	CString csTexte;
    	CMenu *cm;
     
     
    	cm = (CMenu*)GetDlgItem(nID);
     
    	if (cm != NULL)
    	{
    		cm->GetMenuString(0,csTexte,MF_BYPOSITION);
    	}
        TRACE1("Click on button :%d\n\r",nID);
    	TRACE1("Texte : %s\n\r",csTexte);
     
    }
    cm vaut NULL tout le temps

  12. #12
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Par défaut
    je remonte ma derniere question ....

  13. #13
    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,
    GetDlgItem s'adresse a des controles pas a des menus...
    c'est la fonction GetMenu qui doit etre appellée pour la fenetre / frame concernée .
    comme dans mes post precedents .....

  14. #14
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Par défaut
    oui mais GetMenu ne prend pas de parametre,

    comment recuperer alors le texte de celui qui appelle par rapport à l'id recu dans void CDigitickDlg::OnLanguageSelected(UINT nID) ?

  15. #15
    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
    ça ne marche pas comme ça !!!!
    c'est comme pour les autres posts.
    on utilise GetMenu() pour avoir le pointeur sur le menu de la fenetre.
    apres on utilise les differentes fonctions de la classe CMenu pour faire le boulot.
    ici il faut utiliser:
    CMenu::GetMenuString
    int GetMenuString( UINT nIDItem, LPTSTR lpString, int nMaxCount, UINT nFlags ) const;

    int GetMenuString( UINT nIDItem, CString& rString, UINT nFlags ) const;
    voir doc MSDN.
    quitte a faire ensuite une fonction de recherche de l'id a travers les menus pour retrouver le libellé en question...


  16. #16
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Par défaut
    ok, merci ca marche !

    jsuis vraiment un boulet !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void CDigitickDlg::OnLanguageSelected(UINT nID)
    {
    	CString csTexte;
     
    	GetMenu()->GetMenuString(nID, csTexte, MF_BYCOMMAND);
     
        TRACE1("Click on button :%d\n\r",nID);
    	TRACE1("Texte : %s\n\r",csTexte);
     
    }

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

Discussions similaires

  1. Appeler une fonction qui se trouve dans une autre fonction
    Par waxouse dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 11/05/2009, 16h28
  2. Réponses: 4
    Dernier message: 09/11/2007, 14h24
  3. Appel à une fonction qui se trouve sur une autre page
    Par pierrot10 dans le forum Langage
    Réponses: 4
    Dernier message: 21/06/2007, 12h36
  4. [JSP] Appeler une fonction
    Par Patrick95 dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 23/12/2003, 13h44
  5. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48

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