Boite de dialogue et tableau

sacksith Messages postés 13 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 25 avril 2004 - 1 mars 2004 à 16:59
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 2 mars 2004 à 19:55
Bonjour,

Je n'arrive pas à afficher un tableau dans une boite de dialogue déclarée par createdialog et utilisant un fichier ressource .rc

Bon j'arrive à créer cette fenêtre mais comment afficher le contenu d'un vector <vector > montableau ?

Si vous avez des pistes,
merci bcq.
sack

7 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
1 mars 2004 à 17:25
Pourquoi n'utilises-tu pas DialogBoxParam en place de CreateDialog ???

'afficher', qu'est-ce a dire ??? Faudrait voir dans quel element tu veux afficher, EDIT, LISTBOX...

ciao...
BruNews, Admin CS, MVP Visual C++
0
sacksith Messages postés 13 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 25 avril 2004
1 mars 2004 à 18:51
Excuse-moi, je pensais plutôt d'une dialogbox. Donc, oui, l'utilisation d'une dialogBoxParam n'est pas contre indiqué.
Quant à l'élément, cela n'a pas vraiment d'importance. C'est au mieux.

C'est pour afficher un tableau de type
vector <vector > Montableau

tel que l'utilsateur puisse voir ceci :

00000000000000000
11100221000564440
00658400000244500
01120200110540004
etc.

dom
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
1 mars 2004 à 19:16
Pour le maniement de vector et autre bidule stl, a toi de voir.
Exemple avec simple tableau, tu transposeras.

int vect[10], i;
HWHD hlst; // une listbox sur ta dialogbox
char buff[12];
for(i = 0; i < 10; i++) {
itoa(vect[i], buff, 10);
SendMessage(hlst, LB_ADDSTRING, 0, buff);
}

ciao...
BruNews, Admin CS, MVP Visual C++
0
sacksith Messages postés 13 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 25 avril 2004
2 mars 2004 à 18:57
Bonjour,

ça ne marche pas :(
voici le code que j'ai utilisé :
avec hDlg handle de la boite de dialog
et IDC_DEBUGED l'identificateur d'un élément listbox

//SetDlgItemInt(hDlg, IDC_DEBUGED, grilleCarte.size(), false);
for (unsigned y=0; y<grilleCarte.size(); y++)
{
for (unsigned x=0; x<grilleCarte[y].size(); x++)
{
itoa(grilleCarte[y][x], cbuff, 10);
SendMessage(hDlg, grilleCarte[y][x], 0, 0);
}
//SetDlgItemInt(hDlg, IDC_DEBUGED, '\n', false);
}

J'ai bien recupéré la taille du tableau.
J'ai aussi essayé de remplacer la listbox par un edit boxe et le SendMessage par un :
SetDlgItemInt(hDlg, IDC_DEBUGED, grilleCarte[y][x], false);
ou encore par :
SetDlgItemText(hDlg, IDC_DEBUGED, cbuff);

Et toujours rien.
dom
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 mars 2004 à 19:36
Je t'ai deja mis la syntaxe dans le post precedent.

ciao...
BruNews, Admin CS, MVP Visual C++
0
sacksith Messages postés 13 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 25 avril 2004
2 mars 2004 à 19:48
Fais tu référence à ceci :

SendMessage(hDlg, LB_ADDSTRING, 0, cbuff);

J'ai alors un erreur de compilation me disant qu'il n'est pas possible de convertir un char en long

Error E2034 srv12.main.cpp 385: Cannot convert 'char *' to 'long' in function __stdcall LCDebug(HWND__ *,unsigned int,unsigned int,long)
Error E2342 srv12.main.cpp 385: Type mismatch in parameter 'lParam' (wanted 'long', got 'char *') in function __stdcall LCDebug(HWND__ *,unsigned int,unsigned int,long)

En vérifiant sur l'aide de Microsoft SendMessage à cette structure :
LRESULT SendMessage(
HWND hWnd, // handle of destination window
UINT Msg, // message to send
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);

D'où la tentative de modif présentée dans le post précédent.
Est-ce une erreur de syntaxe ? de mauvaise utilisation ?
dom
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 mars 2004 à 19:55
SendMessage(hDlg, LB_ADDSTRING, 0, cbuff);
Mais enfin, tu veux bien faire attention a ce que j'ecris !!!
Tu envoies un message a la fenetre mere, elle se fout du LB_ADDSTRING, le message doit etre pour la listbox.

SendMessage(hlst, LB_ADDSTRING, 0, (long) buff);
voila qui est bon. J'avais oublie de taper le cast (long), tu aurais pu t'en rendre compte.

ciao...
BruNews, Admin CS, MVP Visual C++
0
Rejoignez-nous