我们有一个相对较大的MFC应用程序,它使用SDI来托管许多动态创建的基于CView的视图。应用程序的基本结构有点像Outlook(左侧的树视图,右侧的动态视图)。
我一直在为在应用程序中处理焦点变化的正确方法感到困惑。例如,我希望能够在焦点位于树状视图(左视图)时点击“标签”,并将焦点移动到右视图。虽然我可以捕获树ctrl中的tab键并手动更改为相应的视图,但我们有很多不同的视图类型(一些基于CFormView的),以及大量的分割器控件,我不确定是否有更通用的处理它的方法。
我知道将焦点设置在CDialog或CFormView中很简单(只需使用Visual Studio中的内置Tab键顺序管理器),但是承载多种视图类型和分割条等的应用程序要复杂得多。例如,如果焦点当前在窗体视图中,当我选中窗体视图选项卡顺序的末尾时,如何检测到我需要将输入焦点更改为另一个(动态)视图?
干杯,谢谢大家。
达伦。
答案 0 :(得分:0)
一个明显的答案是简化UI本身。
另一个是在视图中只是'tab'并要求用户使用鼠标从一个视图切换到另一个视图;或者,您可以创建一个视图菜单项,让用户通过选择菜单来选择视图(可以使用键盘,例如,按Alt-V-1选择视图1)。
最后一个选项就是你自己提到的:检测Tab键并自己处理所有内容。