Récupérer valeur combobox (liste déroulante) [Résolu]

Signaler
Messages postés
71
Date d'inscription
lundi 24 mai 2004
Statut
Membre
Dernière intervention
13 septembre 2006
-
Messages postés
71
Date d'inscription
lundi 24 mai 2004
Statut
Membre
Dernière intervention
13 septembre 2006
-
Salut à tous,

Voila je réalise une appli graphique avec les API et j'utilise un combobox.

Mon problème est que j'aimerai récupérer la valeur sélectionner du combobox. J'ai beau chercher partout sur le net je ne trouve pas. Je vous remercie d'avance pour vos réponses.

12 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
Mias c'est idem, on a le handle du control dans lParam lors d'un event WM_COMMAND mais si tu enregistres le HWND du controle avant et que tu l'utilises, ça ne change rien à l'affaire.

ciao...
BruNews, MVP VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
hCombo est certainement invalide.

ciao...
BruNews, MVP VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
CB_GETLBTEXT
Vois qu'un GetWindowText fonctionne aussi très bien avec un combobox.

ciao...
BruNews, MVP VC++
Messages postés
71
Date d'inscription
lundi 24 mai 2004
Statut
Membre
Dernière intervention
13 septembre 2006
2
Je n'arrives pas a faire fonctionner ta solution :(

voila ce que je fais:

                int LenghtTexte = GetWindowTextLength(hCombo);
                char* pCombo = new char[LenghtTexte + 1];
                GetWindowText(hCombo, pCombo, LenghtTexte + 1);
                MessageBox (NULL, pCombo, "Serveur", MB_OK);

Je ne vois pas où utiliser ton

CB_GETLBTEXT ???
Désolé je suis un noob en API ...
Messages postés
71
Date d'inscription
lundi 24 mai 2004
Statut
Membre
Dernière intervention
13 septembre 2006
2
Ah oui petite précision, le MessageBox m'affiche une boite de dialogue vide.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
C'est CB_GETLBTEXT ou GetWindowText mais pas les 2.

ciao...
BruNews, MVP VC++
Messages postés
71
Date d'inscription
lundi 24 mai 2004
Statut
Membre
Dernière intervention
13 septembre 2006
2
oui mais comme je l'ai précisé le résultat que j'obtiens est soit 0 ou une chaine vide :(

Ca te dérangerai de me donner un petit exemple s'il te plait je t'en serait très reconnaissant. J'ai beau essayer de plusieurs facon différentes je n'y arrive pas...
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
Regarde ici exemple que GetWindowText va bon:
http://www.cppfrance.com/code.aspx?id=16638

Dans AppDlgProc:
case WM_COMMAND:
switch(wParam) {case 0x103E9: // CBN_SELCHANGE 1, IDCMB_DRIVES 1001
GetWindowText((HWND) lParam, szdest, 4);

et ça récupère le texte nickel.

ciao...
BruNews, MVP VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
Il aurait d'abord falu voir ce que vaut GetWindowTextLength, aucune idée sur un combo.

ciao...
BruNews, MVP VC++
Messages postés
71
Date d'inscription
lundi 24 mai 2004
Statut
Membre
Dernière intervention
13 septembre 2006
2
Ok je te remercie j'y vois deja plus clair. Mais le truc que je n'avais pas préciser c'est que je voulais récupérer le contenu du combobox lors d'un clique sur un bouton OK. Mais avec ce que tu m'as donné je pense que je vais pouvoir m'en sortir en enregistrant le contenu du combo lors d'un clique sur celui-ci. Je te tiens au courant.
Messages postés
71
Date d'inscription
lundi 24 mai 2004
Statut
Membre
Dernière intervention
13 septembre 2006
2
Bah oui mais le truc c'est qu'il m'affiche OK avec ta solution c'est bizarre. Je te met mon bout de code. (2 solutions)

-->1ere solution:

            if ((HWND) lParam == hBoutonOk){
                char texte[10];
                GetWindowText((HWND) lParam, texte, 4);
                MessageBox (NULL, texte, "Serveur", MB_OK); //affiche OK
            }

-->2eme solution:

            if ((HWND) lParam == hBoutonOk){

                char texte[10];

                GetWindowText(hCombo, texte, 4);

                MessageBox (NULL, texte, "Serveur", MB_OK); //n'affiche rien

            }

Désolé si j'insiste mais je suis vraiment noob en API et je te remercie encore
Messages postés
71
Date d'inscription
lundi 24 mai 2004
Statut
Membre
Dernière intervention
13 septembre 2006
2
Tu as raison c'est mon combo qui était mal déclarer. Je l'avais créer dans le WinMain et là je l'ai mis dans le cas WM_CREATE de WndProc et ca fonctionne maintenant. Merci à toi.