MFC提供了一个CSplitterWnd类,专门用于在文档/视图界面中添加拆分框架。
在MFC中CSplitterWnd类提供了拆分框架的功能。拆分框架的意思是在一个框架中包含多个矩形的窗格。这些窗格通常都是由CView中派生出来,并具有特定应用的小的窗口。同时,这些窗格也有适当的窗口ID。
建立拆分框架,通常是把一个CSplitterWnd对象植入在一个CFrameWnd或CMDIChildWnd对象(父框架)中。建立一个CSplitterWnd对象主要包括以下步骤:
- 在父框架中植入CSplitterWnd类型的成员变量;
- 重写成员函数:CFrameWnd::OnCreateClient;
- 在CFrameWnd::OnCreateClient中调用CSplitterWnd的Create或CreateStatic函数;
调用Create可以建立动态拆分的窗口。动态的拆分窗口的特点是为相同的文档建立许多单独的窗格或视图。程序的框架自动为拆分窗口建立和初始化一个窗口。然后,在程序运行中,操作窗口中的拆分控件才开始建立框架,或者调整大小等其他一些对框架的操作。
同时当你调用Create时,也可以明确规定窗格的初始的行高和列宽。而在你调用Create之后,你则使用SetColumnInfo和SetRowInfo成员函数来调整行高和列宽。
所有动态拆分的窗格都必须是相同类的对象。常见的支持动态拆分的应用程序包括:Microsoft Word 和 Microsoft Excel。
调用CreateStatic可以建立静态拆分的窗口。它的特点是用户只能改变窗格的大小,不能改变其数量和次序。静态拆分框架时,通常每个窗格属于不同的类。
在你建立静态拆分窗口时,你必须明确规定所有的窗格。如果在CFrameWnd::OnCreateClient返回之前你还没有确定所有的窗口,那么框架将不能正确的显示。
CreateStatic成员函数自动把静态拆分框架初始化为行高为 0,列宽为0。可以在调用了CreateStatic后调用SetColumnInfo和SetRowInfo来设置合适的行高和列宽。
每个拆分的窗口支持专门的滚动条,这些滚动条属于CSplitterWnd对象,并分派给指定窗格。