Wie Ueberpruefe ich Editfelder
-
moechte editfelder bei uebergabe bsp. ok button klick ueberpruefen ob etwas im editfeld steht wenn ja soll er fortfahren wenn nein soll er abrechen
-
if(!::GetWindowTextLength(m_EBox)) . .
-
Nuetzlich werds gleich mal ausprobieren thx

-
und wie mach ich das diese function auch Leer meldet wenn ein leerzeichen im textfeld Steht?
[code] if(!::GetWindowTextLength(GetDlgItem(hDlg, IDC_PLAYER))) MessageBox(NULL, "Leer", "Error", MB_OK); else MessageBox(NULL, "Voll", "Error", MB_OK); [/code]thx :xmas1:
-
so evtl ? habs nicht probiert
if(!::GetWindowTextLength(GetDlgItem(hDlg, IDC_PLAYER)) || ::GetWindowText(GetDlgItem(hDlg, IDC:PLAYER)) == _T(" ")) MessageBox(NULL, "Leer", "Error", MB_OK); else MessageBox(NULL, "Voll", "Error", MB_OK);#gg
aber am besten waehre, string holen - von leerzeichen befreien (da gibts ja eine funktion fuer) und dann auf laenge pruefen
-
erklaere mal mit string holen das codesnipe functioniert net
-
Hm grad mal gebastelt, ist doch ganz nett, oder ?

bool IsEditCtrlEmpty(HWND hWnd, int iArgCount, const PTCHAR pszEmpty, ...) { long lTextLength = SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0L); if(!lTextLength) return (true); else if(iArgCount > 0 && pszEmpty != NULL) { PTCHAR pszContent = new TCHAR[lTextLength + 1]; SendMessage(hWnd, WM_GETTEXT, static_cast<WPARAM>(lTextLength + 1), reinterpret_cast<LPARAM>(pszContent)); va_list vaArgs = NULL; va_start(vaArgs, pszEmpty); if(!lstrcmp(pszContent, pszEmpty)) { delete [] pszContent; va_end(vaArgs); return (true); } for(int i = 1; i < iArgCount; i++) { if(!lstrcmp(pszContent, static_cast<const PTCHAR>(va_arg(vaArgs, const PTCHAR)))) { delete [] pszContent; va_end(vaArgs); return (true); } } va_end(vaArgs); delete [] pszContent; } return (false); }PS: Ist getestet und funktioniert
.
-
Aufrufen tut man das Dingen dann so (falls das nit klar ist):
if(IsEditCtrlEmpty(GetDlgItem(hDlg, IDC_PLAYER), 1, TEXT(" "))) MessageBox(hDlg, TEXT("Editfeld ist leer!"), TEXT("Info..."), MB_OK | MB_ICONINFORMATION); else MessageBox(hDlg, TEXT("Editfeld ist nicht leer!"), TEXT("Info..."), MB_OK | MB_ICONINFORMATION);Wenn Du weitere C-Strings hast, die ebenfalls ein leeres Editfeld signalisieren sollen (eben wie hier das Leerzeichen), dann fügst Du die einfach hinten an und erhöhst die Variable iArgCount (2. Parameter) einfach jeweils um eins
.
-
aaaaaaaaaaber - was ist wenn es mehere leerzeichen sind ?
ich wuerde mit den "leerzeichen bereinigen" arbeiten {hab den code dafuer aber nur daheim - musste mal MSDN fragen}
-
@CodeFinder: is wirklich net von dir

Funktioniert suppy,
mei problem war hab nen dialog zum einfeugen von daten in ne access datenbank und wollt verhindern das jemand n leerzeichen als namen uebergibtthx @All :xmas1:
-
Mr Evil schrieb:
aaaaaaaaaaber - was ist wenn es mehere leerzeichen sind ?
ich wuerde mit den "leerzeichen bereinigen" arbeiten {hab den code dafuer aber nur daheim - musste mal MSDN fragen}Hätte man bei Bedard aber noch einfach anpassen können
.