基于对话框的编程之树控件的使用
一、效果图
二、具体步骤
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); }
效果如下: