Problem beim Verarbeiten von Werten einer Textbox
-
Hallo,
ich habe eine Textbox erstellt in die der User etwas (bzw. eine Zahl) eingibt. Jetzt will ich die Werte weiterverarbeiten. Das ganze sieht bis jetzt so aus:LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; static HDC hdc; static HWND hEdit[10]; int arr[4]; char buffer[256]; int Breite, Höhe, Vert, Hor, Tief, Kugeln; char kug[256]; switch (message) { case WM_COMMAND: switch(wParam) { case 1: SendMessage(hEdit[1], WM_GETTEXT, 256, (LPARAM)buffer); Breite = atoi( buffer ); SendMessage(hEdit[2], WM_GETTEXT, 256, (LPARAM)buffer); Höhe = atoi( buffer ); SendMessage(hEdit[3], WM_GETTEXT, 256, (LPARAM)buffer); Vert = atoi( buffer ); SendMessage(hEdit[4], WM_GETTEXT, 256, (LPARAM)buffer); Hor = atoi( buffer ); SendMessage(hEdit[5], WM_GETTEXT, 256, (LPARAM)buffer); Tief = atoi( buffer ); Kugeln = ((Höhe+1)*2)*(Breite+1); itoa(Kugeln, kug, 256); MessageBoxA(hWnd, kug, "Kugeln", MB_OK); break; } break; case WM_CREATE: hEdit[1] = CreateWindowEx(WS_EX_CLIENTEDGE, _T("edit"), NULL, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_LEFT, 170, 20, 100, 22, hWnd, (HMENU) 2005, (HINSTANCE) GetWindowLong (hWnd, GWL_HINSTANCE), NULL); hEdit[2] = CreateWindowEx(WS_EX_CLIENTEDGE, _T("edit"), NULL, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_LEFT, 170, 45, 100, 22, hWnd, (HMENU) 2004, (HINSTANCE) GetWindowLong (hWnd, GWL_HINSTANCE), NULL); hEdit[3] = CreateWindowEx(WS_EX_CLIENTEDGE, _T("edit"), NULL, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_LEFT, 170, 70, 100, 22, hWnd, (HMENU) 2003, (HINSTANCE) GetWindowLong (hWnd, GWL_HINSTANCE), NULL); hEdit[4] = CreateWindowEx(WS_EX_CLIENTEDGE, _T("edit"), NULL, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_LEFT, 170, 95, 100, 22, hWnd, (HMENU) 2002, (HINSTANCE) GetWindowLong (hWnd, GWL_HINSTANCE), NULL); hEdit[5] = CreateWindowEx(WS_EX_CLIENTEDGE, _T("edit"), NULL, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_LEFT, 170, 120, 100, 22, hWnd, (HMENU) 2001, (HINSTANCE) GetWindowLong (hWnd, GWL_HINSTANCE), NULL); hEdit[6] = CreateWindowA("Button","Berechnen", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE ,5,150,100,25,hWnd,(HMENU)1,(HINSTANCE) GetWindowLong (hWnd, GWL_HINSTANCE),0); break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); TextOutA(hdc,5,22,"Breite (Felder):", 16); TextOutA(hdc,5,48,"Höhe (Felder):", 14); TextOutA(hdc,5,72,"Vertikal-Rohre (cm):", 20); TextOutA(hdc,5,96,"Horizontal-Rohre (cm):", 22); TextOutA(hdc,5,120,"Tiefe-Rohre (cm):", 17); EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); break; } return 0; }
Gebe ich jetzt in das Feld Breite 1 ein und in Höhe auch, dann kommt 8 raus, ist ja auch richtig. Gebe ich aber in beide Felder 2 ein, dann sagt die MessageBox mir "i". Das ist bei allen anderen Zahlen auch so (nur mit anderen Buchstaben) auser eben bei 1,1.
Wie kann man das lösen?MFG!
-
Bitte, kann mir jemand helfen? Ist dringend!
-
Leg Dir eigene Controls an als Static oder Edit Control (dann evtl. mit ES_READONLY) und verwende GetDlgItemInt und SetDlgItemInt, wenn es Dir um ints geht.
Ansonsten solltest Du Dir erstmal klar werden das man einen int erstmal in einen char-Array umwandeln muss bevor man in mit TextOut ausgeben kann.
Ich würde Dir aber eher raten zu Controls zu greifen.