3

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

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

我知道在 CDialog- 或 CFormView- 中设置焦点很容易(只需使用 Visual Studio 中的内置选项卡顺序管理器),但托管多种视图类型和分隔条等的应用程序要复杂得多。例如,如果焦点当前位于表单视图中,当我在表单视图选项卡顺序的末尾进行选项卡时,我如何检测到我需要将输入焦点更改为另一个(动态)视图?

欢呼并感谢所有人。

达伦。

4

1 回答 1

0

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

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

最后一个选项是您自己提到的:检测 Tab 键并自己处理所有事情。

于 2012-01-18T15:27:39.850 回答