基于对话框的编程之树控件的使用

一、效果图

二、具体步骤

1、新建一个MFC应用程序,命名为06 CTreeCtrl,应用程序类型选择基于对话框,资源语言选择中文简体,其他默认设置

2、在工具箱中可以找到树控件(Tree Control),拖拽至对话框中

3、右键属性,修改Has Buttons为True,修改Has Lines为True,修改Lines At Root为True

显示效果:

4、为树控件添加变量,设置访问权限为private,变量名称为m_tree

5、将准备好的Icon图标复制到res文件夹下

6、在资源视图中,找到Icon,右键添加资源,选择import,到res文件夹加入icon图标

7、在OnInitDialog函数中编辑代码,将CImageList的声明写到.h文件中做成员属性

    //树控件的使用
    //1、设置图标

    //装备HICON图标
    HICON icons[4];
    icons[0] = AfxGetApp()->LoadIconW(IDI_ICON1);
    icons[1] = AfxGetApp()->LoadIconW(IDI_ICON2);
    icons[2] = AfxGetApp()->LoadIconW(IDI_ICON3);
    icons[3] = AfxGetApp()->LoadIconW(IDI_ICON4);

    //CImageList list;//必须保存住这个集合,写到.h中做成员属性

    //创建图片集合
    list.Create(30, 30, ILC_COLOR32, 4, 4);
    //添加具体图片
    for (int i = 0; i < 4;i++)
    {
        list.Add(icons[i]);
    }
    m_tree.SetImageList(&list, TVSIL_NORMAL);

    //2、设置节点
    HTREEITEM root = m_tree.InsertItem(TEXT("根节点"), 0, 0, NULL);
    HTREEITEM parent = m_tree.InsertItem(TEXT("父节点"), 1, 1,root);
    HTREEITEM sub1 = m_tree.InsertItem(TEXT("子节点1"), 2, 2, parent);
    HTREEITEM sub2 = m_tree.InsertItem(TEXT("子节点2"), 3, 3, parent);

    //设置默认选项
    m_tree.SelectItem(sub1);

此时运行程序,可以看到效果图的显示结果

8、树控件右键属性,在Control Events中添加控件事件(TVN_SELCHANGED),此事件在选中项发生改变时触发

编辑OnTvnSelchangedTree1事件

void CMy06CTreeCtrlDlg::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
    // TODO: Add your control notification handler code here
    *pResult = 0;

    //获取当前项
    HTREEITEM item = m_tree.GetSelectedItem();
    CString name = m_tree.GetItemText(item);
    MessageBox(name);
}

效果如下:

原文地址:https://www.cnblogs.com/yanchaoyi/p/12677929.html