前一阵子因为项目需要,了解了一下MFC拆分窗口的实现。这里总结下来,供以后复习和回顾。
(///先摘抄下基本知识)
MFC支持两种类型的拆分窗口:动态和静态。
静态拆分窗口的行列数在拆分窗口被创建时就设置好了,用户不能更改,但是用户可以缩放各行各列。一个静态拆分窗口最多可以包含16行16列。Windows资源管理器即是静态拆分窗口的实例。资源管理器的主窗口在垂直方向上被静态拆分窗口分成了两半。
动态拆分窗口最多可以有两行两列。但他们可以相互拆分和合并。显示在动态拆分窗口中的视图并不是完全独立的:动态拆分窗口在水平方向上被拆分后,两行窗口具有各自独立的垂直滚动条但却公用一个水平滚动条。Visual C++就使用了动态拆分窗口(Window->split)。
选择静态或动态拆分窗口有两个决定因素:
1、是否希望用户能够交互式地修改拆分窗口的行列配置;是,就选用动态拆分窗口。
2、计划在拆分窗口中使用的视图种类。在静态拆分窗口中很容易使用两个以上不同种类的视图,因为你可以在每个窗格中指定所用的视图类型。而动态拆分窗口默认所有视图使用的都是相同视图类。
基于以上了解,以及项目需要,我选用了静态拆分窗口,且是嵌套拆分窗口。
给框架窗口添加静态拆分窗口的过程如下:
1、给框架窗口类(CMainFrame类)添加一个CSplitterWnd数据成员;
2、覆盖框架窗口的OnCreateView在每个静态拆分窗口的窗格中创建视图;
3、使用CSplitterWnd::CreatView在每个静态拆分窗口的窗格中创建视图。(//在MainFrm.cpp中为creatview添加view类