我已实现静态嵌套分割窗口,求动态切换分割方式的方法。
我的例程是基于SDI的MFC程序,视图类基于CScrollView,共有4个视图类。
在MainFrm类中定义了2个分割窗口,用于进行嵌套分割。
CSplitterWnd m_wndSplitter;
// 新增加一个嵌套分割
CSplitterWnd m_wndSplitterSub;
在MainFrm类OnCreateClient中实现了静态嵌套分割。可以实现具有4个视图窗口的5中分割模式如下:
1 | 2
--|--
3 | 4
1 |
__|
2 | 4
--|
3 |
| 1
|__
4 | 2
|--
| 3
1 | 2 | 3
------------
4
4
------------
1 | 2 | 3
我目前只能是在更改分割方式后,存储分割方式,然后重新启动程序,
在MainFrm类OnCreateClient中根据存储的分割模式来实现了静态嵌套分割。
可以针对每一种格局定义一个CSplitterWnd对象,每个CSplitterWnd对象分别创建4个视图,用ShowWindow控制只显示其中的一个,用SetDlgCtrlID将当前显示的对象ID设置为AFX_IDW_PANE_FIRST,把视图要实现的数据储存在文档中,切换时更新视图。
一个Pane可以挂载多个CSplitterWnd对象,只不过在ShowWindow()后用MoveWindow()控制一下,比SetColumnInfo()要好一些,看不到分割条。
最近我也有这个功能需求,按照leaf_exe的方式实现了,很简单方便