MFC treeview控件不同的节点显示不同的图标方法

 时间:2024-10-28 01:17:38

TreeView控件的主要属性包括Nodes和SelectedNode。Nodes属性包含树视图中的顶级节点列表。SelectedNode属性设置当前选中的节点。您可以在节点旁边显示图标。该控件使用在树视图的ImageList属性中命名的ImageList中的图像。ImageIndex属性可以设置树视图中节点的默认图像。

工具/原料

vc++6.0及MFC类库

方法/步骤

1、1,腩柽鬣盛用InsertItem添加节点参数:文字,图标,父节点返回:HTREEITEM示例:添加一系列节点HTREEITEMhItem=m_Tree.Insert朐袁噙岿Item("root",NULL,NULL);///root就是节点的标题InsertItem函数的第一个参数就是设置他的节点标题2.,用ModifyStyle设置风格参数:取消的风格,增加的风格示例:在对话框初始化时设置风格BOOLCMfc1Dlg::OnInitDialog(){//...m_Tree.ModifyStyle(NULL,TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT);}3,用DeleteItem删除节点4,用.DeleteAllItems删除全部节点5.用Expand展开/收缩节点参数:节点HTREEITEM,展开/收缩示例:m_Tree.Expand(hItem,TVE_EXPAND如果你希望在每个结点前添加一个小图标,就必需先调用CImageList*SetImageList(CImageList*pImageList,intnImageListType);指明当前所使用的ImageList,nImageListType为TVSIL_NORMAL。在调用完成后控件中使用图片以设置的ImageList中图片为准。然后调用HTREEITEMInsertItem(LPCTSTRlpszItem,intnImage,intnSelectedImage,HTREEITEMhParent=TVI_ROOT,HTREEITEMhInsertAfter=TVI_LAST);添加结点,nImage为结点没被选中时所使用图片序号,nSelectedImage为结点被选中时所使用图片序号。下面的代码演示了ImageList的设置。/*m_list为CImageList对象IDB_TREE为16*(16*4)的位图,每个图片为16*16共4个图标*/m_list.Create(IDB_TREE,16,4,RGB(0,0,0));m_tree.SetImageList(&m_list,TVSIL_NORMAL);m_tree.InsertItem("Parent1",0,1);//添加,选中时显示图标1,未选中时显示图标0

2、示例代码:BOOLCTreeDlg::OnInitD坡纠课柩ialog()SetIcon(m_hIcon,TRUE);惺绅寨瞀//SetbigiconSetIcon(m_hIcon,FALSE);后加入:/*************************得到图标文件的绝对**********************************/CStringstrFullName=AfxGetApp()->m_pszHelpFilePath;chardrive[_MAX_DRIVE];chardir[_MAX_DIR];_splitpath(strFullName,drive,dir,NULL,NULL);CStringstrPath;strPath.Format("%s%s",drive,dir);/****************************得到图标文件的绝对*******************************/m_ImageList.Create(16,16,ILC_COLOR8|ILC_MASK,2,1);m_treectrl.SetImageList(&m_ImageList,TVSIL_NORMAL);SHFILEINFOfi;SHGetFileInfo(strPath+"gn.ico",0,&fi,sizeof(SHFILEINFO),SHGFI_ICON|SHGFI_SMALLICON);//0m_ImageList.Add(fi.hIcon);SHGetFileInfo(strPath+"ap.ico",0,&fi,sizeof(SHFILEINFO),SHGFI_ICON|SHGFI_SMALLICON|SHGFI_OPENICON);//1m_ImageList.Add(fi.hIcon);SHGetFileInfo(strPath+"tree.ico",0,&fi,sizeof(SHFILEINFO),SHGFI_ICON|SHGFI_SMALLICON|SHGFI_OPENICON);//2m_ImageList.Add(fi.hIcon);HTREEITEMhroot,hspec,hclass;hroot=m_treectrl.InsertItem("学生成绩",0,0);前一个0表示点击前的图标后一个0是点后的所以这就是点前点后不变hspec=m_treectrl.InsertItem("专业",1,1,hroot);前一个1表示点击前的图标后一个1是点后的所以这就是点前点后不变hclass=m_treectrl.InsertItem("20111",2,2,hspec);前一个2表示点击前的图标后一个2是点后的所以这就是点前点后不变可以试下,加入源文件中如下图

MFC treeview控件不同的节点显示不同的图标方法

3、运行后的treeview的效果图如下,愿大家成功,共同学习交流!

MFC treeview控件不同的节点显示不同的图标方法

怎么获取配置文件的值 springboot集成swagger2访问路径404 如何使用plsql developer连接数据库并编辑用户 清除USB使用记录软件 如何使用jenkins查看用户信息
热门搜索
银手镯图片 殡仪馆图片 lol女英雄福利图片 翻糖蛋糕图片 嫦娥奔月的图片