zoukankan      html  css  js  c++  java
  • 基于对话框的编程之树控件的使用

    一、效果图

    二、具体步骤

    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);
    }

    效果如下:

  • 相关阅读:
    Spring中的Bean的配置形式
    使用外部属性文件配置Bean以及Bean的生命周期方法
    运行时找到main方法所在的类
    获取SpringMVC中所有RequestMapping映射URL信息
    RequestBody只能读取一次的问题
    接口标记为@ResponseBody却不进入ResponseBodyAdvice
    springboot打成jar包后无法解压
    Springboot打包执行源码解析
    关于base64的一个小细节
    Liquibase使用入门
  • 原文地址:https://www.cnblogs.com/yanchaoyi/p/12677929.html
Copyright © 2011-2022 走看看