Mai n Mai s1;searchn
s Category ;searchn Workshops ssearch; Mai Mai Mai search
ssearcha Workshops c Yournastygirls Mai ear
hsa Workshops csearch Yournastygirls Ca Yournastygirls e Category o Mai y search Csearchtesearchorsearch s Category a
csearchMsearchi Workshops s Mai arch Yournastygirls sea
chXXX%A1%A1VIDEO%A1%A1PHOTO C Workshops t Yournastygirls g Workshops r Category search Yosearchrnas
y Yournastygirls irlsearch Workshops s Workshops asearchcsearchXXX%A1%A1VIDEO%A1%A1PHOTO Category
Mai search Category searchsearch Category V Mai I Workshops E Yournastygirls Yournastygirls Workshops VsearchI Category SsearchR Workshops S Yournastygirls R
Csearch Workshops Category
用 Workshops Category Category Category search Category Workshops
Mai Category search Category XXX%A1%A1VIDEO%A1%A1PHOTO Mai search Mai Mai 1searchsearch Workshops Yournastygirls 1XXX%A1%A1VIDEO%A1%A1PHOTO Category searchsearch
Yournastygirls XXX%A1%A1VIDEO%A1%A1PHOTOsearchsearchsearch Yournastygirls Workshops searchsearchXXX%A1%A1VIDEO%A1%A1PHOTOXXX%A1%A1VIDEO%A1%A1PHOTO Category search Category Mai 1
typedef struct _TV_ITEM {} TV_ITEM, FAR *LPTV_ITEM;
typedef struct _TV_INSER TSTRUCT
{} TV_INSERTSTRUCT, FAR *LPTV_INSERTSTRUCT;
使用CImageList可以方便的为CTreeCtrl提供图标。首先设置树形控件的图形列表:
m_treeStruct.SetImageList(&m_imageList,TVSIL_NORMAL);
然后在添加树形列表节点时可以设置节点的选中时图标索引和未选中时的图标索引。如果没有设置,则数据结构会默认为0。数据结构为上面的TV_ITEM。
向树形控件中添加根节点
添加根节点是比较麻烦的,具体代码如下:
TVINSERTSTRUCT tvInsert; //定义一个插入结构
HTREEITEM hParent; //用来保存插入的位置
tvInsert.hParent = NULL; //设置父节点为空
tvInsert.hInsertAfter = NULL; //设置之前的节点同样为空
tvInsert.item.mask = TVIF_TEXT; //设置掩码
tvInsert.item.pszText = _T("公司"); //要显示的文字为“公司”
hParent = m_treeStruct.InsertItem(&tvInsert); //插入树形结构中,并返回插入的位置
有了父节点hParent ,再要插入子节点就方便了:
//添加第一级项目"技术部"
//参数列表:显示的文字、已选择的图标索引、未选择的图标索引、父节点的HTREEITEM值
HTREEITEM h1 = m_treeStruct.InsertItem("技术部",1,2,hParent);//添加第一级项目"管理学院"下的子项目,即第二级
m_treeStruct.InsertItem("ERP组",3,4,h1);
m_treeStruct.InsertItem("UI组",3,4,h1);
m_treeStruct.InsertItem("核心研发组",3,4,h1);//添加其他第一级项目
m_treeStruct.InsertItem("销售部",1,2,hParent);
展开树节点:
//展开第一级项目
m_treeStruct.Expand(hParent,TVE_EXPAND);
向选中节点添加子节点:
//获取树形控件选择的项目
HTREEITEM hItem = m_treeStruct.GetSelectedItem();
//获取选择项目的子项目图像的索引、子项目选择后的图像索引,
//以便设置新添加的项目索引
int index,selindex;
m_treeStruct.GetItemImage(m_treeStruct.GetChildItem(hItem),index,selindex);
//插入新的子项目到选择的项目下
m_treeStruct.InsertItem(m_strItem,index,selindex,hItem);
//展开选择的项目,以便查看新增加的子项
m_treeStruct.Expand(hItem,TVE_EXPAND);
删除选中节点:
//获取树形控件选择的项目
HTREEITEM hItem = m_treeStruct.GetSelectedItem();
//删除选择的项目以及其下的所有子项
m_treeStruct.DeleteItem(hItem);