VS2010/MFC编程(常用控件:树形控件Tree Control控件创建h和实例)
树形控件简介
树形控件(Tree Control)是一种常用的控件,用于呈现树形数据结构。树形控件通常以树的形式呈现数据,每个节点可以有多个子节点,在视图上以缩进形式进行展示。树形控件可以用于很多场景,例如展示文件夹目录、组织结构等等。
树形控件创建步骤
以下是树形控件的创建步骤:
-
在对话框的资源视图中找到树形控件,在界面上拖拽到需要添加的位置。
-
在类视图中添加对应的成员变量,数据类型选择为 CTreeCtrl。
cpp
class CMyDlg : public CDialogEx
{
// ...
private:
CTreeCtrl m_treeCtrl;
// ...
};
- 使用 CTreeCtrl 类的 Create 函数创建树形控件。在 OnInitDialog 函数中调用 Create,设置控件大小和样式等属性。
```cpp
BOOL CMyDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 创建树形控件
m_treeCtrl.Create(WS_CHILD | WS_VISIBLE | WS_BORDER | TVS_HASLINES | TVS_LINESATROOT, CRect(10, 10, 150, 150), this, 1234);
// ...
}
```
- 向树形控件添加节点。使用 CTreeCtrl 类的 InsertItem 函数添加节点,设置参数为节点的文本和父节点的句柄。如果要添加根节点,则父节点句柄设为 TVI_ROOT。
```cpp
BOOL CMyDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 创建树形控件
m_treeCtrl.Create(WS_CHILD | WS_VISIBLE | WS_BORDER | TVS_HASLINES | TVS_LINESATROOT, CRect(10, 10, 150, 150), this, 1234);
// 添加根节点
HTREEITEM hRoot = m_treeCtrl.InsertItem(_T("Root"));
// 添加子节点
HTREEITEM hChild = m_treeCtrl.InsertItem(_T("Child"), hRoot);
// ...
}
```
示例说明
示例一:树形控件用于展示文件夹目录
以下是用树形控件展示文件夹目录的示例代码。假设你已经在项目中添加了资源文件夹 Res 文件夹,下面的代码会将其子目录展示在树形控件中。
BOOL CMyDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 创建树形控件
m_treeCtrl.Create(WS_CHILD | WS_VISIBLE | WS_BORDER | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS, CRect(10, 10, 400, 400), this, 1234);
// 添加根节点
HTREEITEM hRoot = m_treeCtrl.InsertItem(_T("Res"), TVI_ROOT);
// 枚举子目录
CString strPath = _T(".\\Res\\");
CFileFind finder;
BOOL bWorking = finder.FindFile(strPath + _T("*.*"));
while (bWorking)
{
bWorking = finder.FindNextFile();
// 处理文件夹
if (finder.IsDirectory() && !finder.IsDots())
{
m_treeCtrl.InsertItem(finder.GetFileName(), hRoot);
}
}
finder.Close();
// ...
}
示例二:树形控件用于展示组织结构
以下是用树形控件展示组织结构的示例代码。假设你的公司有部门、小组和成员三个级别,编写如下代码可以在树形控件中展示整个组织结构。
BOOL CMyDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 创建树形控件
m_treeCtrl.Create(WS_CHILD | WS_VISIBLE | WS_BORDER | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS, CRect(10, 10, 400, 400), this, 1234);
// 添加根节点
HTREEITEM hRoot = m_treeCtrl.InsertItem(_T("公司"), TVI_ROOT);
// 添加部门节点
HTREEITEM hDept1 = m_treeCtrl.InsertItem(_T("技术部"), hRoot);
HTREEITEM hDept2 = m_treeCtrl.InsertItem(_T("人事部"), hRoot);
HTREEITEM hDept3 = m_treeCtrl.InsertItem(_T("市场部"), hRoot);
// 添加小组节点
HTREEITEM hGroup1 = m_treeCtrl.InsertItem(_T("开发组"), hDept1);
HTREEITEM hGroup2 = m_treeCtrl.InsertItem(_T("测试组"), hDept1);
HTREEITEM hGroup3 = m_treeCtrl.InsertItem(_T("薪资组"), hDept2);
HTREEITEM hGroup4 = m_treeCtrl.InsertItem(_T("招聘组"), hDept2);
HTREEITEM hGroup5 = m_treeCtrl.InsertItem(_T("广告组"), hDept3);
HTREEITEM hGroup6 = m_treeCtrl.InsertItem(_T("客户组"), hDept3);
// 添加成员节点
m_treeCtrl.InsertItem(_T("张三"), hGroup1);
m_treeCtrl.InsertItem(_T("李四"), hGroup1);
m_treeCtrl.InsertItem(_T("王五"), hGroup2);
m_treeCtrl.InsertItem(_T("赵六"), hGroup2);
m_treeCtrl.InsertItem(_T("Jerry"), hGroup3);
m_treeCtrl.InsertItem(_T("Bob"), hGroup3);
m_treeCtrl.InsertItem(_T("Tom"), hGroup4);
m_treeCtrl.InsertItem(_T("Lucy"), hGroup4);
m_treeCtrl.InsertItem(_T("John"), hGroup5);
m_treeCtrl.InsertItem(_T("Jane"), hGroup5);
m_treeCtrl.InsertItem(_T("Mike"), hGroup6);
m_treeCtrl.InsertItem(_T("Emily"), hGroup6);
// ...
}
以上是树形控件的创建和使用完整攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:VS2010/MFC编程(常用控件:树形控件Tree Control控件创建h和实例) - Python技术站