Zeichenbeschränkung bei EditBox
-
Hi, mit welcher Funktion kann ich bei einer Edit Box die Zeichen / Ziffern beschränken?
-
Dies ist machbar mit dem ES_NUMBER Stil!
-
Nein, ich glaub du hast mich falsch verstanden, ich will dass maximal 4 Zeichen eingegeben werden können
-
SendMessage () mit EM_LIMITTEXT.
-
Kann hier eventuell jemand einen Sourcecode von einem GUI mit EditBox (auch wenns nur die EditBox ist) posten? Kriege es nähmlich nicht hin, aus der EditBox auszulesen und diesen String dann als "Ordner stellen" (also _mkdir(editbox_string) weiterzuverarbeiten.. =[
Wäre demjenigen unendlich dankbar!
-
Der Source hier ist absoluter Blödsinn, ich verwende ihn nur, um die Editbox zu testen (man beachte: "Beenden" liest die Editbox aus :P)
Müsstest die GetDlgItemInt Funktion zur GetDlgItemTxt umschreiben, und den ausgangswert natürlich auch in einem char speichern.
#define STRICT #include <windows.h> #include <iostream> #include <stdio.h> LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); const char szAppName[] = "blablabla"; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { MSG msg; HWND hWnd; WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); wc.lpszClassName = szAppName; wc.lpszMenuName = NULL; RegisterClass(&wc); hWnd = CreateWindow( szAppName, szAppName, 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 message, WPARAM wParam, LPARAM lParam) { static HWND hLogin_User; static HWND hButton; switch (message) { case WM_DESTROY: { PostQuitMessage(0); return 0; } case WM_CREATE: hButton = CreateWindow( "button", "Beenden", WS_CHILD | WS_VISIBLE, 550,550, 100, 100, hWnd, NULL, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); hLogin_User = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", WS_CHILD | WS_VISIBLE | WS_BORDER | ES_NUMBER, 20,30,200,20, hWnd, (HMENU) 1, (HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE), NULL); return 0; break; case WM_COMMAND: { if (lParam == (LPARAM)hButton) { if (HIWORD(wParam) == BN_CLICKED) { BOOL bSuccess; int nTimes = GetDlgItemInt(hWnd, GetDlgCtrlID( hLogin_User), NULL, FALSE); char asdf[30]; sprintf(asdf, "%i", nTimes); MessageBox(0, asdf, NULL, MB_OK); } } } } return DefWindowProc(hWnd, message, wParam, lParam); }
-
Ach ja, hier noch der Code für die Zeichenlimitierung, Danke an WM_EM!
SendMessage(hLogin_User, EM_LIMITTEXT, 4, NULL);