Eingabefocus im Dialog
-
In einem Dialog kann über einen Button ein weiter Dialog aufgerufen werden. Nach der Rückkehr aus diesem weiteren Dialog ist der Eingabefocus des vorher aktuellen Editfeldes verschwunden. Wie kann ich diesen sicherstellen?
-
Naja einfach den vorherigen Focus temporär speichern und nachher wieder setzten, also in etwa so:
// Pseudo-Code ->Auf Button-Click<- HWND hPrevFocus = GetFocus(); -'weiterer Dialog' erstellen- -'weiterer Dialog' geschlossen- SetFocus(hPrevFocus); ->Ende-Gelände<-
-
Ich hätte nicht gefragt, wenn das so funktioniert hätte - tut es leider nicht. Kann aber keine grosse Sache sein!
-
Wenn du auf den Button klickst, ist der Fokus natürlich auf dem Button und nicht mehr auf dem Edit Feld.
-
Aha, und warum sagst Du das nicht, dass Du es so schon probiert hast?!

Dann WM_KILLFOCUS...
-
Mit den Focus-Funktionen, WM_SETFOCUS, WM_KILLFOCUS bleibt die Sache nicht sauber zu handhaben. Es gelingt nur, den in der Ressource festgelgten ersten TABSTOP wieder herzustellen - immerhin etwas. Es müssen offenbar die Caret-Funktionen eingesetzt werden. Will ich probieren.
-
SetFocus in Dialogen sollte man tunlichst nicht verwenden!

http://blogs.msdn.com/oldnewthing/archive/2004/08/02/205624.aspx