KM Master | 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:
Code :
- LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- HWND hwnd2;
- HWND hwnd3;
-
-
- char*bouh=new char[10000];
-
-
-
-
-
-
-
- switch (message) /* handle the messages */
- {
- case WM_CREATE:
-
- hwnd2=CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,"EDIT","sui",WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL,10,10,175,24,hwnd,NULL,GetModuleHandle(NULL),NULL);
- hwnd3=CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,"BUTTON","OK",WS_VISIBLE|WS_CHILD,100,100,100,20,hwnd,NULL,GetModuleHandle(NULL),NULL);
-
- /* bon, ici, je crée les deux controles edit et le bouton, lors de la création de la fenêtre */
- break;
- case WM_COMMAND:
-
- switch(wParam){
-
-
- case BN_CLICKED:
- GetWindowText(hwnd2,bouh,10000);
- MessageBox(NULL,bouh,"",10000);
- /* et ici, quand on clique sur OK, ca met dans "bouh" le texte de l'edit, et dans la messagebox on affiche bouh */
-
-
-
-
-
- break;
-
-
- }
-
- break;
-
-
- case WM_DESTROY:
- PostQuitMessage(0);
-
- break;
- default:
- return DefWindowProc (hwnd, message, wParam, lParam);
- }
- delete[] bouh;
- return 0;
- }
|
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! |