VS2010/MFC编程(常用控件:树形控件Tree Control控件创建h和实例)

VS2010/MFC编程(常用控件:树形控件Tree Control控件创建h和实例)

树形控件简介

树形控件(Tree Control)是一种常用的控件,用于呈现树形数据结构。树形控件通常以树的形式呈现数据,每个节点可以有多个子节点,在视图上以缩进形式进行展示。树形控件可以用于很多场景,例如展示文件夹目录、组织结构等等。

树形控件创建步骤

以下是树形控件的创建步骤:

  1. 在对话框的资源视图中找到树形控件,在界面上拖拽到需要添加的位置。

  2. 在类视图中添加对应的成员变量,数据类型选择为 CTreeCtrl。

cpp
class CMyDlg : public CDialogEx
{
// ...
private:
CTreeCtrl m_treeCtrl;
// ...
};

  1. 使用 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);

    // ...
}

```

  1. 向树形控件添加节点。使用 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技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 不允许截图的app怎么截图

    不允许截图的app怎么截图 在使用手机或电脑的过程中,我们经常会遇到一些防止截屏的app或页面,它们主要是为了保护隐私和版权。但是,有时候我们需要截屏,比如需要记录重要信息或者分享好的内容。那么,对于这些不允许截图的app怎么办呢? 常规方法 首先,我们来了解一下常规的截屏方法。在手机上,一般是同时按住电源键和音量减少键,或者电源键和Home键长按。在电脑上…

    其他 2023年3月28日
    00
  • phpforeachcontinue

    PHP中的foreach和continue 在PHP中,foreach循环是一种常见的循环结构,用于遍历数组中的元素。有时候,我们需要在循环中跳过某些元素,以便只处理特定的素。本攻略将详细介绍如何在PHP中使用foreach和continue来跳过元素,包括两个示说明。 使用continue语句 在PHP中,continue语句用于跳过当前循环中的某个元素,…

    other 2023年5月7日
    00
  • javascript写的一个链表实现代码

    链表是常见的数据结构之一,在JavaScript中也可以用来实现一些常见的算法。本文将介绍如何使用JavaScript实现一个链表,并提供两个示例说明。 编写链表实现代码 下面是一个简单的JavaScript链表实现代码: class Node { constructor(data, next = null) { this.data = data; this…

    other 2023年6月27日
    00
  • 详解为什么指针被誉为C语言灵魂

    详解为什么指针被誉为C语言灵魂 指针是C语言中一个非常重要的概念,被广泛认为是C语言的灵魂。它提供了一种强大的机制,使得程序能够直接访问和操作内存中的数据。本文将详细讲解为什么指针如此重要,并提供两个示例来说明其用途。 1. 内存访问和操作 指针允许程序直接访问和操作内存中的数据,这是C语言的一大特点。通过指针,我们可以获取变量的地址,并通过地址来读取或修改…

    other 2023年8月2日
    00
  • Page.ClientScript.RegisterStartupScript

    下面是关于Page.ClientScript.RegisterStartupScript的完整攻略,包括基本概念、使用流程和两个示例等方面。 Page.ClientScript.RegisterStartupScript的基本概念 Page.ClientScript.RegisterStartupScript是ASP.NET Web Forms中的一个方法,…

    other 2023年5月6日
    00
  • tortoisesvn版本合并(merge)

    TortoiseSVN版本合并(Merge) TortoiseSVN是一个Subversion版本控制系统的Windows客户端。它使用户可以浏览Subversion仓库,检出元数据,并执行更改以发布新代码。TortoiseSVN的一个主要功能是版本合并,也称为Merge。 什么是版本合并? 版本合并是将不同版本的代码或文档的更改合并为一个新版本的过程。版本…

    其他 2023年3月28日
    00
  • sql 实现学生成绩并列排名算法

    SQL 实现学生成绩并列排名算法 对于管理大量学生的学校或机构而言,计算学生成绩并列排名一直是一个重要的问题。在传统的手工计算中,需要耗费大量的时间和精力,容易产生错误。而使用 SQL 可以方便快捷地实现这一计算。本文将介绍如何用 SQL 实现学生成绩并列排名算法。 数据结构 首先,我们需要有学生信息和成绩数据的表格。假设我们的表格名为“score”,包含以…

    其他 2023年3月28日
    00
  • iOS自定义控件开发梳理总结

    iOS自定义控件开发梳理总结 为什么要开发自定义控件 在开发iOS应用时,虽然系统内置的控件基本都能满足一般需求,但是在面对一些特殊的需求时,就需要自定义控件来实现定制化效果或者增强交互性能。 自定义控件开发的基本要点 1. 需求分析 在开发自定义控件之前,首先需要明确需求,包括控件的外观、功能及交互逻辑等内容。 2. 功能实现 根据需求设计控件的功能实现方…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部