problème sur la récupération d'un controle edit. - C++ - Programmation
Marsh Posté le 01-09-2008 à 16:58:38
C'est presque bon. Il fraudrait juste revoir le cours d'informatique sur les "scopes" des variables, sur la différence entre les variables déclarées sur la pile et celles déclarées sur le tas. Le problème se situe là :
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) |
Les handles sont déclarés en tant que variable provisoires sur la pile. Leur contenu sera susceptible d'être écrasé dès que le programme sortira de la fonction WindowProcedure. Quand le programme y rentrera à nouveau, les contenus de hwnd2 et hwnd3 seront donc différents et Windows sera perdu.
A la place, il faudrait avoir des variables globales ou statiques, par exemple :
HWND hwnd2; |
Marsh Posté le 01-09-2008 à 21:21:19
Pfiou, ca marche nickel. Faudra effectivement que je vois ces histoire de piles. Merci beaucoup en tout cas
Marsh Posté le 01-09-2008 à 15:02:17
Salut!
Alors mon objectif est de faire une fenêtre a l'intérieur de laquelle il y a un controle edit, et un bouton ok. Alors on écrit dans la zone texte, et quand on clique sur OK, je voudrais que dans une messagebox s'affiche ce qu'on a tapé.
Bon, je n'utilise pas de ressource pour cette application Windows. Voici ma fonction WindowProcedure de réception des messages:
Bon, bien sur ca ne marche pas. J'ai bien une fenêtre et un edit, mais quand je clique sur OK, ca me met une messagebox, avec rien dedans.
pourtant quand dans GetWindowText, je met hwnd au lieu de hwnd2, ca m'affiche bien le texte "windows app" de la fenetre principale.
J'ai fait pas mal de tests et j'ai l'impression qu'en fait quand dans la structure switch, si dans un case je fais une certaine instruction (par exemple modifier la valeur d'une variable) dans les autres case, si je fais une instruction qui dépend de cette modification, (par exemple je demande d'afficher la variable), ca va pas marcher, comme s'il avait oublié ce qui c'était passé dans le case précédent. Ca me parait pas normal.
Bon j'espere que j'ai été clair et dans les règles.
salut!