Problem mit WM_SETTEXT
-
Hallo,
ich probiere gerade etwas rum, und habe gerade folgendes Problem: Ich kann meine editbox in der WM_CREATE Message mit SendMessage Text zuweisen. Will ich jedoch nach einem Button-Click einen Text einfügen klappt, das nicht. SendMessage() muss aber ausgeführt werden, da die darauf folgende MessageBox angezeigt wird. Bin gerade etwas verwirrt, das muss doch irgendeine Banalität sein, das das unter WM_COMMAND nicht klappt.
TIA
David.LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HWND cmd_ok; /*OK-Button*/ //HWND lst_items; /*Listenfeld*/ HWND txt_item; /* Textfeld */ switch (message) /* handle the messages */ { case WM_CREATE: cmd_ok=CreateWindow("button","Einfügen",WS_CHILD | WS_VISIBLE | ES_LEFT,10,10,150,20,hwnd,(HMENU)CMD_OK,((LPCREATESTRUCT) lParam) -> hInstance,NULL); SendMessage(cmd_ok,WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); //lst_items=CreateWindowEx(WS_EX_CLIENTEDGE,"listbox",NULL,WS_CHILD | WS_VISIBLE | LBS_HASSTRINGS |LBS_NOTIFY| WS_VSCROLL| WS_BORDER,10,40,150,150,hwnd,(HMENU)LST_ITEMS,((LPCREATESTRUCT) lParam) -> hInstance,NULL); txt_item=CreateWindowEx(WS_EX_CLIENTEDGE,"edit","",WS_CHILD | WS_VISIBLE | ES_LEFT,170,10,150,20,hwnd,(HMENU)TXT_ITEM,((LPCREATESTRUCT) lParam) -> hInstance,NULL); SendMessage(txt_item,WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); SendMessage(txt_item,WM_SETTEXT,NULL,(LPARAM)"DummyText"); break; case WM_DESTROY: PostQuitMessage (0); /* send a WM_QUIT to the message queue */ break; case WM_COMMAND: switch (HIWORD(wParam)) { case BN_CLICKED: switch(LOWORD(wParam)) { case CMD_OK://Button but (hwndbut) SendMessage(txt_item,WM_SETTEXT,NULL,(LPARAM)"x"); MessageBox(NULL,"x","x",0); break; } break; } default: /* for messages that we don't deal with */ return DefWindowProc (hwnd, message, wParam, lParam); } return 0; }
-
probier's mal mit WM_CLICK und sieh nach welcher Button gedrückt wurde und reagiere darauf entsprechend

EDIT: Oder vorerst andere Frage: Wird dirdenn die Messagebox ausgegeben, wenn du geklickt hast?
-
die handle deiner fenster sind ungültig, denn du verlässt die wndproc wieder somit werden sie zerstört. solltest sie static machen.
-
oh gott, ja klar. Wusste doch das es ne Banlität ist. Schon lange kein C mehr getippt

Danke
David.