Je rencontre quelques soucis à remplir une liste déroulante de façon récursive. En fait je réalise une concaténation qui ne se apsse pas bien. Avec le code suivant :
//on recupere le nombre de sommets
const int nv = m->mesh.getNumVerts() ;
//char *tab[nv] ;
for(int i=0; i<nv; i++)
{
TSTR item = "Point p" + i ;
SendMessage(hwndListBox, CB_INSERTSTRING, i, (LPARAM)(LPCSTR)item) ;
}
j'obtiens ça dans ma liste :
Point p
oint p
int p
nt p
n p
p
p
Ce que j'aimerais avoir, c'est :
Point p0
Point p1
...
Or là il me prend ma chaine à partir du ième caractère, au lieu de rajouter i à chaque fois
Ça m'étonne que ton compilateur la laisse passer, celle là.
Une chaîne de caractères, en C++ (tout comme en C, d'ailleurs), équivaut à un pointeur sur le premier caractère. Donc, tu additionnes un entier avec un pointeur.
Pour une concaténation, renseigne toi sur les std::ostringstream.
Oui, j'ai été également surpris de voir qu'il ne gueulait pas sur la différence de type dans la concaténation, mais bon!
En fait en bidouillant un peu sur LPARAM, un simple sprintf m'a sorti d'affaires.
Darholm
Zero since 2007
Pb de boucle
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.