管理输入重点关注MFC SDI多视图应用程序

时间:2009-08-01 22:42:20

标签: mfc dynamic views focus tabs

我们有一个相对较大的MFC应用程序,它使用SDI来托管许多动态创建的基于CView的视图。应用程序的基本结构有点像Outlook(左侧的树视图,右侧的动态视图)。

我一直在为在应用程序中处理焦点变化的正确方法感到困惑。例如,我希望能够在焦点位于树状视图(左视图)时点击“标签”,并将焦点移动到右视图。虽然我可以捕获树ctrl中的tab键并手动更改为相应的视图,但我们有很多不同的视图类型(一些基于CFormView的),以及大量的分割器控件,我不确定是否有更通用的处理它的方法。

我知道将焦点设置在CDialog或CFormView中很简单(只需使用Visual Studio中的内置Tab键顺序管理器),但是承载多种视图类型和分割条等的应用程序要复杂得多。例如,如果焦点当前在窗体视图中,当我选中窗体视图选项卡顺序的末尾时,如何检测到我需要将输入焦点更改为另一个(动态)视图?

干杯,谢谢大家。

达伦。

1 个答案:

答案 0 :(得分:0)

一个明显的答案是简化UI本身。

另一个是在视图中只是'tab'并要求用户使用鼠标从一个视图切换到另一个视图;或者,您可以创建一个视图菜单项,让用户通过选择菜单来选择视图(可以使用键盘,例如,按Alt-V-1选择视图1)。

最后一个选项就是你自己提到的:检测Tab键并自己处理所有内容。