Dialogitem soll focus bekommen
-
heiho
folgendes,
ich lass hier ein dialog anzeigen wo der benutzer einen namen eingeben soll,
direkt nach erstellung des dialoges, soll das edit feld den focus haben, sodass der benutzer nicht erst reinklicken musswie kann ich das bewerkstelligen ?
das habe ich bisher:
void COwnClass::OnFunc(COwnClass *mainclass) { ::DialogBox(mainclass->GetInstance(), MAKEINTRESOURCE(IDD_GETNAME), mainclass->GetHandle(), (DLGPROC)GetNameProc); }BOOL CALLBACK GetNameProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: ::SetFocus(::GetDlgItem(hwndDlg, IDC_NEWNAME)); // das bewirkt nichts return TRUE; case WM_DESTROY: case WM_CLOSE: ::EndDialog(hwndDlg,0); return TRUE; . . . . .
-
habs eben rausgefunden
mit
::SendMessage(::GetDlgItem(hwndDlg, IDC_NEWNAME), WM_SETFOCUS, reinterpret_cast<WPARAM>(::GetDlgItem(hwndDlg, IDC_NEWNAME)), 0);ging es
args, zu frueh gefreut, wenn ich das so mach werden keine tastatureingaben mehr angenommen+
//nochmal edit
ich habe das jetzt so geloest das ich die TabStops von den beiden buttons Ok, Cancel weggenommen habe {auf false gesetzt}, ich hatte gelesen das das erste automatisch den focus bekommt, vermutlich hatte das ok die ganze zeit den focus erhalten
warum SetFocus selber nicht funktionierte, und bei SendMessage alle weiteren eingaben nicht mehr angenommen werden bleibt mir aber weiterhin ein raesel
-
Win32 Programmer's Reference schrieb:
WM_INITDIALOG
Return Values
The dialog box procedure should return TRUE to direct Windows to set the keyboard focus to the control given by hwndFocus. Otherwise, it should return FALSE to prevent Windows from setting the default keyboard focus.
-
Der Return-Wert einer DialogProc sollte aber mittlerweile INT_PTR sein
.