Boite de dialogue et saisie de string [C++] - C++ - Programmation
Marsh Posté le 23-09-2003 à 16:16:19
IceTeaPeche a écrit : Rebonjour tous,
|
strcpy non ?
Marsh Posté le 23-09-2003 à 16:19:36
a la limite le strcpy remplace mon for... Mais le pb c'est que l'adresse de Nom[] merde des qu'elle passe dans le Proc... je comprends pas pkoi y a aucune raison. :S
En plus je suis obligé de faire la copie dans le Proc parceque sinon je n'ai aucun moyen de determiner si la fenetre est fermée ou pas, vu qu'il n'y a pas de programmation chronologique sur windows
Marsh Posté le 23-09-2003 à 16:49:50
c'est koi cette DLGPROC avec un char* a la fin ? (char* ki a le meme nom ke ta globale au passage, d'ou la possible ratance)
c'est normal que la fct GetName() prenne un parametre 'Nom' qui est pas utilisé ?
Marsh Posté le 23-09-2003 à 16:52:34
IceTeaPeche a écrit : a la limite le strcpy remplace mon for... Mais le pb c'est que l'adresse de Nom[] merde des qu'elle passe dans le Proc... je comprends pas pkoi y a aucune raison. :S |
ben une DLGPROC c'est :
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
alors rajouter un char* evidemment ca passe a la compilation grace au cast, mais ce que contient ce char* quand tu rentres dans la dlgproc, ca doit etre le mystere...
Marsh Posté le 23-09-2003 à 16:53:08
nonononon
dslé c ma presentation qui est po claire
Ma globale c'est TempString, Nom c'est ma variable de WinMain() que je veux egaliser a la saisie. Mais apparement je ne peux mettre dans GetTextDlg qu'une globale, alors j'essaye d'egaliser les deux variables apres.. mais pkoi l'adresse pointée par Nom change quand elle passe dans Proc?
Marsh Posté le 23-09-2003 à 16:54:43
Oki, voilou pkoi l'adresse de Nom merde
alors y a aucun moyen :S?
on ne peut stocker une saisie que dans une globale avec zindoz?
Marsh Posté le 23-09-2003 à 16:56:40
Autre algo qui peut marcher c'est ne rendre la main a GetName() qu'une fois que EndDialog est executée...
C'est possible ca?
Svp, gourous du windows, repondez moi
Marsh Posté le 23-09-2003 à 16:57:41
IceTeaPeche a écrit : Oki, voilou pkoi l'adresse de Nom merde |
et oui, c'est comme ca...
d'ailleurs je te conseille de mettre tout en global.
Marsh Posté le 23-09-2003 à 17:09:25
IceTeaPeche a écrit : Autre algo qui peut marcher c'est ne rendre la main a GetName() qu'une fois que EndDialog est executée... |
t'as de la chance ke j'ai rien d'autre a faire...
utilise DialogBoxParam(), ki ne rend la main que quand tu fermes la DialogBox, et qui te permet de spécifier un parametre (un LPARAM donc ce ke tu veux). ce parametre se récupere dans ta dlgproc, ds le msg WM_INITDIALOG, ds la var lParam.
donc tu passes ton char* dans DialogBoxParam (dernier parametre), puis tu le sauvegardes dans le case WM_INITDIALOG, pour t'en re-servir plus tard.
bien sur y a d'autres solutions, mais en voila une...
Marsh Posté le 23-09-2003 à 16:00:25
Rebonjour tous,
je vous jure que cette fois y aura pas de code moche
mon probleme est simple, j'ai fait fonction qui saisie la string entrée dans une boite de dialogue dans une variable globale char TempString[20]. J'aimerai en fait que cette chaine finisse dans un tableau qui est declaré dans la fonction main et non pas en global. Le probleme c'est que j'ai essayé de passer mon tableau en argument de ma fonction DlgProc mais ca ne marche pas, je ne sais pas a quel niveau ; des que je rentre dans le gestionnaire de messages de la boite de dialogue l'adresse du tableau change... Je vous mets juste un extrait de code :
Voila j'espere que c'est pas trop crade et que vous pourrez m'aider.
Merci
Message édité par iceteapeche le 23-09-2003 à 16:02:39
---------------
Se souvenir des belles choses...