Kurze Frage zu CreateWindow
-
Hallo so erstelle ein Edit Feld:
hwndEdit_1= CreateWindowEx(WS_EX_CLIENTEDGE, "edit", "", WS_CHILD | WS_VISIBLE , 20, 20, 140, 20, hWnd, (HMENU)1, NULL, ((LPCREATESTRUCT) lParam) -> hInstance );
Wenn ich dort einen Text eingebe wird der dann Automatisch Nullterminiert oder muss ich nachher in meinen Buffer noch einen Nullterminator einsetzen wenn ich den Text mit GetWindowText aus dem Edit Feld auslese?
Und nochwas, wenn ich in das Edit Feld klicke dann wird mir 2 mal die MessageBox angezeigt warum?
Und ist es besser wenn ich die Nachrichten über
if (lParam == (LPARAM)... )
oder über
switch(LOWORD(wParam))
abrufe und bei CreateWindowEx dann die HMENU Variable setze?
case WM_CREATE: { hwndButton_1 = CreateWindowEx(WS_EX_CLIENTEDGE, "button", "Button", WS_CHILD | WS_VISIBLE , 20, 80, 140, 20, hWnd, NULL, NULL, ((LPCREATESTRUCT) lParam) -> hInstance ); hwndEdit_1= CreateWindowEx(WS_EX_CLIENTEDGE, "edit", "", WS_CHILD | WS_VISIBLE , 20, 20, 140, 20, hWnd, NULL, NULL, ((LPCREATESTRUCT) lParam) -> hInstance ); return 0; } case WM_COMMAND: { if (lParam == (LPARAM)hwndButton_1) { int len = GetWindowTextLength ( hwndEdit_1); vector<char>Buffer( len+1 ); GetWindowText( hwndEdit_1, &Buffer[0], len+1 ); Buffer[len]='\x00'; ofstream file ("file.txt"); file << &Buffer[0]; return 0; } if (lParam == (LPARAM)hwndEdit_1) { MessageBox(0,"Edit Box lParam","Edit Box lParam",0); return 0; } return 0; }
-
-
Stimmt, da hätte ich auch gucken können ...
Aber hat auch wer eine Antwort auf meine 2te Frage?
-
Weil es mehere WM_COMMAND Nachrichten gibt wenn der Fokus in ein Editi-Contzrol kommt.
Schau esDir doch im Spy++ an oder schau Dir an was gemeldet wird.
Aber allene eine MessageBox hier zu verwenden ist Blödsinn.
Du klickst in das Edit Control und bekommst EN_SETFOCUS
Du zeigst die Messageboy an und das Editcontrol erzeugt EN_KILLFOCUS.Wieso benützt Du Messageboxen fürs Testen? Es gibt den Debugger.