MFC树控件相关操作

树控件

在工具栏中找到 Tree Control 控件:
①如果想让树控件有线,那么就在右侧属性栏中选择Has Lines ,将False 改为True;
②如果想让根节点有线,则选择属性 Lines At Root ,将 False 改为 True。

右键添加变量,更改作用域为Private,设置变量名为m_tree

①将图标复制放到项目文件夹下,右键项目顶端,打开所在的文件夹,点开文件夹里的res文件(资源文件),将.ico图标文件放入。
②在资源视图中点击Icon,右击选择“添加资源”,导入,默认刚才的res文件路径,把图标都一次性添加进来。添加完成之后,就可以在Icon栏里查看到你所添加的文件

注:①如果添加资源发现没有我们之前导入的图标,如何解决?
答:先在.rc文件中用语句的方式定义,之后在资源视图中右键Icon选择添加资源,新建资源,建立所需要的N个Icon空白图标,之后在.rc文件中删除或者更改宏,即可将图标导入。
②关于如何打开.rc文件:
我们可以预先编写语句如:

icon[1] = AfxGetApp()->LoadIconW(IDI_ICON1); 
icon[1] = AfxGetApp()->LoadIconW(IDI_ICON2);
icon[2] = AfxGetApp()->LoadIconW(IDI_ICON3);
icon[3] = AfxGetApp()->LoadIconW(IDI_ICON4);

其实我们在这之前并没有导入IDI_ICON2等关联的图标,也没有定义这个宏,
删除之前res文件添加的一个图标,如果我们重新打开项目,点击资源视图,系统会自动弹出一个框:
在这里插入图片描述
点击编辑代码,即可进入到.rc文件。
最终语句的修正如图所示:
在这里插入图片描述

下图是定义的一个图像列表,由于其运行方式与堆栈有关,我们将之写道.h文件中,如果不写到这里就导致显示不出来我们所定义的图标。 划重点!!!!
在这里插入图片描述
相应的代码如下:在上述过程执行完毕后,在.cpp文件的.OnInitDialog 函数中添加如下代码

 // TODO: 在此添加额外的初始化代码
 //树控件使用
 //1、设置图标
 //准备HICON图标
 HICON icon[4];
 icon[0] = AfxGetApp()->LoadIconW(IDI_ICON1);//通过全局的应用对象加载你的图标,参数为图标的ID,在Icon栏里查看
 icon[1] = AfxGetApp()->LoadIconW(IDI_ICON2);
 icon[2] = AfxGetApp()->LoadIconW(IDI_ICON3);
 icon[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(icon[i]);
 }
 m_tree.SetImageList(&list,TVSIL_NORMAL);//第一个是把列表放到树控件里去但要求是地址符。第二个是参数是正常模式,不需要管
 //2、设置节点
 HTREEITEM root =  m_tree.InsertItem(TEXT("根节点"), 0, 0, NULL);//每一个节点都是一个新的item 该语句是添加第一个节点。参数:1 节点名称 2 显示哪个编号的图片 3 当你选中这个图片后你想显示什么样的内容,默认为0 4 该节点父节点 
    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);

最终的运行结果如图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42308217/article/details/108331410