我们有一个相对较大的 MFC 应用程序,它使用 SDI 来托管许多动态创建的基于 CView 的视图。应用程序的基本结构有点像 Outlook(左侧为树视图,右侧为动态视图)。
我一直对在应用程序中处理焦点变化的正确方法感到困惑。例如,我希望能够在焦点位于树视图(左视图)时点击“选项卡”,并将焦点移动到右视图。虽然我可以捕获树 ctrl 中的 tab 键并手动更改为适当的视图,但我们有很多不同的视图类型(一些基于 CFormView)和很多拆分器控件,我不确定是否有更通用的处理它的方法。
我知道在 CDialog- 或 CFormView- 中设置焦点很容易(只需使用 Visual Studio 中的内置选项卡顺序管理器),但托管多种视图类型和分隔条等的应用程序要复杂得多。例如,如果焦点当前位于表单视图中,当我在表单视图选项卡顺序的末尾进行选项卡时,我如何检测到我需要将输入焦点更改为另一个(动态)视图?
欢呼并感谢所有人。
达伦。