星驰编程网

免费编程资源分享平台_编程教程_代码示例_开发技术文章

SplitterCtrl-用于将某些窗口划分为几个部分的控件

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

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

使用代码

该控件包括以下类:

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

#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类的打开的接口。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言