Récupérer valeur d'une ComboBox avec GetCurSel() et GetLBText() (ERREUR C2228)

Résolu
freepouy18 Messages postés 49 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 15 septembre 2005 - 14 juin 2005 à 16:05
freepouy18 Messages postés 49 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 15 septembre 2005 - 15 juin 2005 à 11:23
Bonjour a tous, j'ai un problème avec une combobox, je desire récupérer la valeur sélectionnée pour faire un traitement particulier, voici le code :

#include
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string>
#include <fstream>
#include
#include <cstdlib>

void MaFonction()
{
CString nom_client ;
int nIndex = Combo_Client.GetCurSel(); //erreur1


if(nIndex!=CB_ERR)
Combo_Client.GetLBText(nIndex,nom_client); //erreur2
}

erreur1 : error C2228: left of '.GetCurSel' must have class/struct/union type

erreur2: error C2228: left of '.GetLBText' must have class/struct/union type

Si qqun pouvais m'aider, Merci d'avance!!!

12 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 juin 2005 à 16:09
Je suis en train de me demander si tu utilises les MFC ou pas. Quel est
le type de Combo_Client? Si c'est un HWND, ce n'est pas comme ca qu'il
faut faire. Il faut utiliser les message CB_GETCURSEL, CB_GETITEMDATA
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
15 juin 2005 à 10:54
Les MFC je peux pas trop t'expliquer. J'en ai fait un peu mais j'ai tout oublié

Pour récupérer le texte, c'est ma faut, je crois que je t'ai donné le mauvais message, je crois que c'est plutot CB_GETLBTEXT:



char nom_client[MAX_TAILLE];



//ici je récupère le bon index

int nIndex = SendDlgItemMessage(Combo_Client,CB_GETCURSEL,0,0);

if(nIndex!=CB_ERR)

SendDlgItemMessage(Combo_Client,CB_GETLBTEXT,nIndex,(LPARAM)nom_client);



Si tu fais comme ca tu n'utilise pas les MFC, mais c'est aussi bien comme ca, si tu peux t'en passer autant le faire

<!-- @ --><link href="../../../../css/inetsdk.css" type="text/css" rel="stylesheet"><!-- @ --><style type="text/css">
PRE.clsCode { font-size:110%; }
PRE.clsSyntax { font-size:100%; }
TD DIV.clsBeta { display:none;}

A:link { color:#0000ff; text-decoration:underline;}
A:visited { color:#0000ff; text-decoration:underline;}
A:hover { color:#3366ff; text-decoration:underline;}
MSHelp\:link {
color:#0000ff;
text-decoration:underline;
cursor:hand;
hoverColor:#3366ff;
filterString: ;}
</style><link href="ms-help://Hx/HxRuntime/HxLink.css" type="text/css" rel="stylesheet"><XML id="_topicdata" pagetype="winmsg" proj="platsdk" name="CB_GETLBTEXT" pubpath="/platform/commctls/comboboxes/comboboxreference/comboboxmessages/cb_getlbtext.htm"><!-- topic data --><root></root></XML><xml xmlns:mshelp="http://msdn.microsoft.com/mshelp"></xml>
3
freepouy18 Messages postés 49 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 15 septembre 2005
14 juin 2005 à 16:15
Oui j'uitilise effectivement les MFC, s'il faut utiliser une autre maniere, je ne sais pas laquelle, alors peux-tu me donner un exemple suceptible de fonctionner avec les MFC!!!
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 juin 2005 à 16:17
Je t'ai demandé le type de Combo_Client...

A priori avec les MFC c'est bien une notation pointée qu'on utilise
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ricky78 Messages postés 126 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 11 juillet 2006
14 juin 2005 à 16:35
si tu as definit ton combo avec class wizzard - add variables - et que ton combo est definit en control tu utilise le

int nIndex = Combo_Client.GetCurSel();

si tu as definit ton combo dans ton code avec un getdlgitem(IDC_COMBO_mycombo) essaye plutot ça

int nIndex = Combo_Client->GetCurSel();

cordialement

TOCHE
0
freepouy18 Messages postés 49 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 15 septembre 2005
14 juin 2005 à 16:35
C'est une Combo Box.
0
freepouy18 Messages postés 49 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 15 septembre 2005
14 juin 2005 à 16:45
C'est bon j'ai trouvé, il fallait bien utiliser les messages, voici le code :

void MaFonction()
{
CString nom_client ;

int nIndex = SendDlgItemMessage(Combo_Client,CB_GETCURSEL,0,0);
if(nIndex!=CB_ERR)
nom_client=SendDlgItemMessage(Combo_Client,CB_GETITEMDATA,nIndex,0);
}

Merci a tous,
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 juin 2005 à 17:31
Tu sais qu'avec les MFC tu peu utiliser une classe pour les ComboBox
(CComboBox je pense). Comme tu utilises les MFC, autant aller jusqu'a
bout!
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
14 juin 2005 à 17:34
#include
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string>
#include <fstream>
#include

C'est étrange les MFC lol
Enfin j'dis rien j'suis pas mieux :)


void Aurevoir( void ); //Bonne journée
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 juin 2005 à 17:47
Ca c'est pas beau déja, et ca n'a rien a voir avec les MFC, c'est juste
un mélange de C et de STL. Je me demande comment il fait pour utiliser
CString avec ca...
0
freepouy18 Messages postés 49 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 15 septembre 2005
15 juin 2005 à 10:34
Ecoutez, j'espère que vous acceptez aussi les débutants dans ce forum parce qu'en tous cas, ça n'a pas l'air. Je suis là pour apprendre alors est-ce que qqun peut m'expliquer le fonctionnement des MFC en qqes mots et surtout pourquoi cette histoire de combo n'est pas cohérente avec ce fonctionnement?

Joky je n'est pas compris ton truc sur les include!!!

De plus je n'arrive toujours pas à récupérer la valeur du combo, nom_client contient toujours une chaîne vide, je vous redonne le code :

CString nom_client ;

//ici je récupère le bon index
int nIndex = SendDlgItemMessage(Combo_Client,CB_GETCURSEL,0,0);


if(nIndex!=CB_ERR)
nom_client=SendDlgItemMessage(Combo_Client,CB_GETITEMDATA,nIndex,0);

Merci!!!
0
freepouy18 Messages postés 49 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 15 septembre 2005
15 juin 2005 à 11:23
Merci vecchio56, c'est bien ça et il faut surtout utiliser "char nom_client[MAX_TAILLE];" et non "CString nom_client" sinon ça ne marche pas.

Pour ce qui est des MFC, ce n'est pas grave, en espérant quand même que qqun répondra à ma question.

Merci.
0
Rejoignez-nous