LRESULT -> Char[] bzw. long
-
Hi,
also ich habe folgendes Programm:
#include <windows.h> #include <windef.h> #include <winuser.h> #define edit1 1 #define button1 2 #define button2 3 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static char szAppName[] = "Name" ; HWND hwnd ; MSG msg ; WNDCLASSEX wndclass ; wndclass.cbSize = sizeof (wndclass) ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION) ; RegisterClassEx (&wndclass) ; hwnd = CreateWindow (szAppName, "WinAPI", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ; ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; } LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { static HWND hwndedit1, hwndbutton1, hwndbutton2; LRESULT a = 1, b = 2; switch (iMsg) { case WM_CREATE : hwndedit1 = CreateWindowEx(WS_EX_CLIENTEDGE ,"edit", NULL,WS_CHILD | WS_VISIBLE | ES_LEFT, 0, 0, 150, 20, hwnd, (HMENU) edit1, ((LPCREATESTRUCT) lParam) -> hInstance, NULL) ; SendMessage(hwndedit1, WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); SendMessage(hwndedit1, WM_SETTEXT, 0, (long)"1"); hwndbutton1 = CreateWindow ("button", "Bitte Klicken", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0, 40, 150, 30, hwnd, (HMENU) button1, ((LPCREATESTRUCT) lParam) -> hInstance, NULL) ; //Button "=" bzw. Berechne SendMessage(hwndbutton1, WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); hwndbutton2 = CreateWindow ("button", "Open MessageBox", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_VCENTER, 10, 100, 500, 30, hwnd, (HMENU) button2, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); SendMessage(hwndbutton2, WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); return 0 ; case WM_COMMAND: switch (HIWORD(wParam))//Aktionsauswahl { case BN_CLICKED://Button gedrückt ? switch(LOWORD(wParam))//Welcher ? { case button1: SendMessage(hwndedit1,WM_SETTEXT,0,(long)"Der Button wurde gedrückt"); break; case button2: if (SendMessage(hwndedit1, WM_GETTEXT, 0, 0) == (long)"1") SendMessage (hwndedit1, WM_SETTEXT, 0, (long)"2"); else if (SendMessage(hwndedit1, WM_GETTEXT, 0, 0) == (long)"2") SendMessage(hwndedit1, WM_SETTEXT, 0, (long)"1"); else MessageBox(hwnd,"gvzgd","hbcfe",0); break; } break; } return 0; case WM_DESTROY : PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, iMsg, wParam, lParam) ; }Also, das Programm soll eigentlich Wenn man den unteren Button drückt die 1 in der Editbox zu einer 2 machen oder andersrum.
Ich denke der Fehler liegt hier drin:
if (SendMessage(hwndedit1, WM_GETTEXT, 0, 0) ==(long)"1") [/code]aber ich hab keine ahnung wie ich ihn beheben kann.
Kann mir jemand helfen?

Schonmal danke im voraus!
-
Naja, vielleicht solltest Du mal die Doku zu WM_GETTEXT lesen

http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowmessages/wm_gettext.asp
-
hey, cooler Tipp!
Und jetzt funkt es sogar, vielen dank!
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { static HWND hwndedit1, hwndbutton1, hwndbutton2; LRESULT a = 1, b = 2; int ilen; char puffer[10]; switch (iMsg) { case WM_CREATE : hwndedit1 = CreateWindowEx(WS_EX_CLIENTEDGE ,"edit", NULL,WS_CHILD | WS_VISIBLE | ES_LEFT, 0, 0, 150, 20, hwnd, (HMENU) edit1, ((LPCREATESTRUCT) lParam) -> hInstance, NULL) ; SendMessage(hwndedit1, WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); hwndbutton1 = CreateWindow ("button", "Bitte Klicken", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0, 40, 150, 30, hwnd, (HMENU) button1, ((LPCREATESTRUCT) lParam) -> hInstance, NULL) ; //Button "=" bzw. Berechne SendMessage(hwndbutton1, WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); hwndbutton2 = CreateWindow ("button", "Open MessageBox", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_VCENTER, 10, 100, 500, 30, hwnd, (HMENU) button2, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); SendMessage(hwndbutton2, WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); SendMessage(hwndedit1, WM_SETTEXT, 0, (long)"1"); return 0 ; case WM_COMMAND: switch (HIWORD(wParam))//Aktionsauswahl { case BN_CLICKED://Button gedrückt ? switch(LOWORD(wParam))//Welcher ? { case button1: SendMessage(hwndedit1,WM_SETTEXT,0,(long)"Der Button wurde gedrückt"); break; case button2: ilen = SendMessage(hwndedit1,WM_GETTEXTLENGTH,0,0); SendMessage(hwndedit1, WM_GETTEXT, ilen+1, (long)puffer); if (puffer[0] == '1') SendMessage (hwndedit1, WM_SETTEXT, 0, (long)"2"); else if (puffer[0] == '2') SendMessage(hwndedit1, WM_SETTEXT, 0, (long)"1"); else MessageBox(hwnd,"gvzgd","hbcfe",0); break; } break; } return 0; case WM_DESTROY : PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, iMsg, wParam, lParam) ; }
-
Naja... ich würde Dir nur mal Raten zu überprüfen, was passiert wenn man mehr als 10 Zeichen eingibt... (i.d.R. wird es abstürzen; aber vielleicht hast Du auch Glück...)
-
Ja, danke!
