Programm beendet sich nach SetWindowText() Aufruf
-
Moin,
ich wollte verhindern, dass User was anderes als 0,1,2,3 eingeben können.
Ich hatte mir folgendes überlegt:case WM_COMMAND: char buffer[6]; if(LOWORD (wParam)==ID_EDIT_OLENGTH) if(HIWORD (wParam)==EN_CHANGE) { GetWindowText((HWND)lParam,buffer,6); int iLength=GetWindowTextLength((HWND)lParam); if(!(buffer[iLength-1]=='0'||buffer[iLength-1]=='1'||buffer[iLength-1]=='2'||buffer[iLength-1]=='3')) { SetWindowText((HWND)lParam,buffer); } return 0; }Immer wenn der User ein Zeichen eingibt, dass nicht erlaubt ist soll es gelöscht werden und der String ohne das falsche Zeichen wieder in die Editbox geschrieben werden. Allerdings beendet sich das Programm immer, wenn SetWindowText aufgerufen wird. Was mache ich falsche??
Danke im voraus
Lupus
-
Was sagt der Debugger?
-
Ich habe es hin bekommen, ich hatte vergessen, wenn ich das Zeichen lösche, nur noch '\0' im buffer steht und dass ich diesen Fall nicht berücktsichtigt habe. Dadurch, dass \0 in meiner Abfrage fehlte hatte ich eine Endlosschleife produziert.