【转】 MFC 分割窗体(Splitter Windows) 2011-03-20 18:32 转载自 651405842 最终编辑 drunkdream MFC 分割窗体(Splitter Windows) 文档描述 MFC中的 CSplitterWnd类,该类用来支持窗体的分割和管理分割后每一个子窗格(pane)的大小 1 分割窗体风格(Splitter Styles) CSplitterWnd类支持 2种不同风格的分割窗口 1.1 静态分割(static splitter) 分割的窗格(pane)在分割窗体(splitter window;)创建时创建,而且顺序,数量不会变化,分割控制条(Spli控制每个窗格的大小.通常不同的窗格是不同的视图类(view class); 例如 Visual C++graphics 和 Windows文件管理器就是这个风格的分割窗体; 该风格分割窗体不会用到分割格(splitter box) 1.2 动态分割(dynamic splitter) 当用户控制视图的分割或停止分割, 附加窗格会被创建或销毁; 这种动态分割开始于一个单独的视图,分割格box)用于初始化分割;当一个视图可以在 2个方向上被分割时,会有 3个新的视图被创建并显示为 3个新的窗格;当被激活(active)时,分割格(splitter box)会如同分割控制条(splitter bar)一样在各个窗格间被绘制;当用户除加窗格会被销毁,只有原来的视图(分割时位于 0行 0列位置的窗格)会被保留直到分割窗体本身被销毁; 例如 Microsoft Excel 和 Microsoft Word都是这种风格的分割窗体; 当创建任意一种风格的分割窗体时,必须给定分割窗体的最大的行列数; 静态风格的分割窗体,每个窗格必须被创建 CSplitterWnd::CreateView; 动态风格的分割窗体 第一个窗格会在 CSplitterWnd对象创建被自动创建 静态风格的分割窗体的最大行列数为 16 x 16 动态风格的分割窗体的最大行列数为 2 x 2 推荐的分割方式为: 1 X 2 2 X 1 2 X 2 2 分割窗体的例子(Splitter Samples) 很多MFC的列子程序都直接或间接的用到了分割窗体 MFC入门程序Scripple程序的第4 部中就用到动态切分MFC标准示例中ViewEx展示静态使用切分窗体的方法,包括如何在一个切分窗体中包含另一个切分窗体 3 分割窗体中使用的术语(Terminology Used By Implement) CsplitterWnd(分割窗体): 负责提供窗格切分空间和滚动条(同行(row)共享竖直滚动条(Vertical ScrollBar),同列(column)共享水平滚(Horizontal ScrollBar) );同时行列的下标从...