第2节  Frame-Splitter模型

更新于 2026年10月10日 版权声明
第2节 Frame-Splitter模型

拆分窗口类(CSplitterWnd类),可以将框架窗口分隔为上下或左右多个子窗口。分隔器窗口在空间位置上并不是只有一个“分隔条”那么大,而是覆盖整个框架父窗口的客户区。

创建一个工程名为“sp”的SDI程序,使用分隔器窗口将主框架的客户区分为左右两个部分。

1)在程序向导第1个步骤中,去掉“Document/View architecture support”选项,如图12-16所示。

图示

图12-16 创建框架视图程序

2)工程创建完成后,添加CTreeView类的派生类CLeftView作为分隔器左侧视图,如图12-17所示。

图示

图12-17 添加树视图类的派生类

3)再添加CListView类的派生类CRightView作为分隔器右侧视图,如图12-18所示。

图示

图12-18 添加列表视图类的派生类

4)在CLeftView类的头文件中包含基类的头文件,并添加控件类的引用型变量。

图示

5)在CLeftView类的源文件中,修改构造函数初始化控件引用变量。

图示

6)在CRightView的头文件中包含基类的头文件,并添加控件类的引用型变量。

图示

7)在CRightView类的源文件中,修改构造函数初始化控件应用变量。

图示

8)在主框架类CMainFrame类的头文件中,添加一些成员变量并去掉原有的CChildView类变量。

图示

图示

9)在CMainFrame类的源文件中,去除m_wndView相关的代码。(https://www.daowen.com)

图示

10)在CMainFrame类中,添加OnCreateClient虚函数并修改函数代码。

图示

11)编译并运行,测试代码,这样就完成了一个简单的分隔窗口,如图12-19所示。

图示

图12-19 查看运行结果

12)在CLeftView类中添加OnInitialUpdate虚函数,并修改代码初始化树形视图。

图示

13)在CRightView类中添加OnInitialUpdate虚函数,并修改代码初始化列表视图。

图示

14)在CRightView类中添加一个公用的成员函数,用于在列表中刷新指定目录下的文件。

图示

图示

15)在CLeftView类中,添加TVN_SELCHANGED消息映射函数并修改代码。

图示

16)编译并运行,测试代码,如图12-20所示。

图示

图12-20 查看运行结果

17)在框架类内创建分隔窗口只需要两个步骤。

①在框架类的虚函数OnCreateClient回调时,调用CSplitterWnd::CreateStatic创建多行多列的分隔器。

②调用CSplitterWnd::CreateView函数,在分隔器的每个窗格内都要创建一个对应的子窗口。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)