Bonjour,
Je suis en train de faire un petit programme C API windows sans prétention.
Je rencontre un problème avec les données complémentaires d'une combobox précise alors que tout se passe bien pour d'autre combobox pour lesquelles j'utilise exactement la même méthode, au noms de variables près.
En gros, j'affiche des noms de parsonnes dans la combobox à l'aide de CN_ADDSTRING, depuis une lecture de table MySQL, mais, pour retrouver l'identifiant de chaque personne, je place cet identifiant en données complémentaires via CB_SETITEMDATA.
Voici le code de chargement de la combobox :
Le code pour récupérer (temporaire pour vérification car je pinaille depuis pas mal de temps sur ce problème) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 MYSQL_RES *resuti; MYSQL_ROW euti; char nomprenom[61]; int newligne; resuti = SelectBase("SELECT * FROM USERS"); <= fonction pour encapsuler 'mysql_query'. Elle marche bien ; des 'MessageBox' pour vérifier ont été ok. while((euti = mysql_fetch_row(resuti)) != NULL) { sprintf(nomprenom, "%s %s", euti[2], euti[1]); newligne = SendDlgItemMessage(hwndDlg, IDC_LISTEUTICOM, CB_ADDSTRING, 0, (LPARAM)nomprenom); SendDlgItemMessage(hwndDlg, IDC_LISTEUTICOM, CB_SETITEMDATA, newligne, (LPARAM)euti[0]); }
Ca me retourne n'importe quoi genre valeurs bidons. Toujours les mêmes, par contre !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 // Vérif contenu de ITEMDATA de la liste des users int nbuti, i; char r[1024]; nbuti = SendDlgItemMessage(hwndDlg, IDC_LISTEUTICOM, CB_GETCOUNT, 0, 0); sprintf(r, "Nombre de users : %d \n", nbuti); for(i = 0; i < nbuti; i++) sprintf(r, "%svaleur %d => %s\n", r, i, SendDlgItemMessage(hwndDlg, IDC_LISTEUTICOM, CB_GETITEMDATA, i, 0)); MessageBox(hwndDlg, r, "Users dans ITEMDATA", MB_OK); // Fin de vérif
Comme précisé plus haut, j'effectue exactement la même chose avec d'autres combobox (dont une dans la même dialogbox) et ça marche nickel !!!
Où est-ce que je me plante ? Est-ce que celles qui marchent marchent par chance ?
Vous remarquerez qu'en tant qu'ancien adepte du C standard, j'ai du mal à utiliser les différents subterfuges et substitutions parfois inutiles, parfois fondamentales, que la programmation windows apporte par dessus le C.
Merci pour votre aide !
Partager