2009-08-01 6 views
3

Wir haben eine relativ große MFC-Anwendung, die eine SDI zum Hosten einer Reihe dynamisch erstellter CView-basierter Ansichten verwendet. Die Grundstruktur der Anwendung ähnelt Outlook (Baumansicht links, dynamische Ansicht (en) rechts).Verwalten des Eingabefokus für eine MFC SDI-Mehrfachansichtsanwendung

Ich habe rätselhaft über die richtige Art, Fokuswechsel in der App zu behandeln. Ich möchte beispielsweise in der Lage sein, auf die Registerkarte "Tab" zu klicken, während der Fokus auf der Baumansicht (linke Ansicht) liegt, und den Fokus auf die rechte Ansicht verschieben. Während ich die Tab-Taste in der Baum-Ctrl erfassen und manuell in die entsprechende Ansicht wechseln konnte, haben wir viele verschiedene View-Typen (einige CFormView-basiert) und viele Splitter-Controls und ich bin mir nicht sicher, ob es ein generischeres gibt Art und Weise, damit umzugehen.

Ich weiß, den Fokus in einer CDialog- oder CFormView- ist einfach (nur mithilfe der integrierten Registerkarte Reihenfolge-Manager in Visual Studio), aber eine Anwendung, die mehrere Ansichtstypen und Trennleisten hostet usw. ist viel komplexer . Befindet sich der Fokus beispielsweise in einer Formularansicht, wenn ich über das Ende der Registerreihenfolge der Formularansicht hinaus wische, wie kann ich feststellen, dass ich den Eingabefokus in eine andere (dynamische) Ansicht ändern muss?

Prost und vielen Dank.

Darren.

Antwort

0

Eine naheliegende Antwort wäre, die UI selbst zu vereinfachen.

Eine andere Möglichkeit besteht darin, nur innerhalb einer Ansicht zu "Tab" zu gehen und den Benutzer zu veranlassen, mit der Maus von einer Ansicht zur nächsten zu wechseln; alternativ können Sie einen Menüeintrag für die Ansicht erstellen und den Benutzer durch Auswählen einer Menüauswahl auswählen lassen (die Tastatur könnte beispielsweise verwendet werden, um Ansicht 1 durch Drücken von Alt-V-1 auszuwählen).

Die letzte Option wäre, was Sie selbst erwähnt haben: Tab-Taste erkennen und alles selbst handhaben.

Verwandte Themen