Focus in nichtmodalen Dialogen



  • Hallo,

    ich habe ein kleines Problem: Ich verwende eine nicht-modale Dialogbox, die im Vordergrund angezeigt wird, mit vier CEdit-Controls. Eins von Ihnen hat den Focus (z.B. Nr. 2), wenn ich jetzt in das Haupt-Fenster klicke, wird die Dialogbox deaktiviert und das Hauptfenster aktiviert. So weit, so gut! Wenn ich auf die Titelleiste der Dialogbox klicke, wird diese aktiviert und das CEdit-Control, welches am Anfang den Focus hatte, hat auch jetzt wieder den Focus. Wo ist diese Information abgelegt und wie komme ich an sie heran?

    mfG und vielen Dank,

    Stimpy



  • GetFocus()



  • Damit bekommt man das Fenster (CWnd*), das den Focus hat, aber nicht das Fenster/Control in einem Dialog, das den Focus bekommen würde, wenn der Dialog aktiviert wird. Hilft mir also leider nicht weiter.



  • Merk dir welches Fenster aktuell den Focus hat und speicher das ab!
    Dann setz auf das Fenster von dem du den aktuellen haben willst den Fokus, frage dann ab welches Element den Fokus hat und dann setz ihn wieder auf dein Fenster;)

    kapiert?:D



  • Das ist aber nicht ganz die feine Art der Programmierung, und flackernde Fenster will ich nicht haben. Irgendwoher muss man doch herausfinden können, wo diese Information herzubekommen ist.



  • Schon mal versucht, von außen GetFocus deines Dialoges aufzurufen?



  • 1. Wozu brauchst Du das eigentlich?

    2. Reicht es nicht, beim fokussieren des Dialogs per GetFocus() abzufragen, welches Control den Fokus gerade eben vor einer extrem kurzen Zeit bekommen hat?



  • GetFocus() liefert CWnd*, dass momentan den Focus innehat. Ich brauche eine Funktion die mir sagt, welches Control in dem Dialog den Focus innehätte, wenn er aktiviert werden würde.
    Hat sich aber eh erledigt, hab eine elegante Lösung gefunden.


Log in to reply