该控件对于将对话框,程序的主窗口或子窗口按几部分进行分区是必需的。您可以将窗口SplitterCtrl管理到每个部分。结果,我们将获得带有控件的矩阵。所述SplitterCtrl衍生自CWnd并且是基于MFC共同的控制。通常,SplitterCtrl与相似CSplitterWnd,但更易于使用。例如,您可以创建一个复杂的矩阵。为此,将其分成一个或几个单元,必须将SplitterCtrl和划分为多个部分。

splitter的作用(SplitterCtrl-用于将某些窗口划分为几个部分的控件)(1)

同样,可以将矩阵绑定到父母窗口的四个角度之一。您可以使用鼠标来动态或静态拉动窗口之间的边界以及更多其他边界。

使用代码

该控件包括以下类:

splitter的作用(SplitterCtrl-用于将某些窗口划分为几个部分的控件)(2)

要创建控件并向其中添加元素,请执行以下操作:

#include "SplitterCtrl.h" SplitterCtrlEx<SplitterCtrlStyle1> m_Splitter; CListCtrl m_List1, m_List2; … … if( !m_Splitter.Create(this, WS_CHILD | WS_VISIBLE, CRect(0,0,200,200), ID_SplitterCtrl) ) return -1; // error. // Create child controls. if( !m_List1.Create(WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | LVS_REPORT, CRect(0,0,0,0), &m_Splitter,ID_List1) || !m_List2.Create(WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | LVS_REPORT, CRect(0,0,0,0), &m_Splitter,ID_List2) ) return -1; // error. m_List1.InsertColumn(0,"00",LVCFMT_LEFT,100); m_List2.InsertColumn(0,"01",LVCFMT_LEFT,100); // Add child items in the m_Splitter. m_Splitter.AddRow(); m_Splitter.AddColumn(); m_Splitter.AddColumn(); m_Splitter.SetWindow(0,0,m_List1.m_hWnd); m_Splitter.SetWindow(0,1,m_List2.m_hWnd); // Load state from registry. if( !m_Splitter.LoadState(AfxGetApp(),"SplitterCtrl","SplitterState") ) { m_Splitter.Update(); // !!! m_Splitter.SetColumnsEqualWidth(); // error -> create default state. } m_Splitter.Update();12345678910111213141516171819202122232425262728293031复制代码类型:[cpp]

您可以将控件作为普通矩阵进行管理,动态地插入和删除行和列(AddRow/AddColumn,InsertRow/InsertColumn,DeleteRow/DeleteColumn)。该控件可以分配大小(SetColumnWidthForStatic/SetRowHeightForStatic,SetColumnWidthForDynamic/SetRowHeightForDynamic),还可以使单元格的宽度和高度相等(SetColumnsEqualWidth/SetRowsEqualHeight)。控制有望调用Update函数来显示由功能设定的结果InsertRow,DeleteColumn,SetRowHeightForStatic,SetColumnWidthsForDynamic等。而且,可以保存和从注册表或其它信号源(控制的负载状态LoadState/SaveState)。要了解所有可能性,请查看SplitterCtrl类的打开的接口。

,