资源描述:
《树形控件-基础》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、VC树形控件TreeCtrl经验总结(一)树形控件可以用于树形的结构,其中冇一个根接点(Root)然后下面冇许多了结点,而每个了结点上有允许有一个或多个或没有子结点。MFC中使用CTreeCtrl类来封装树形控件的各种操作。通过调用BOOLCreate(DWORDdwStyle,constRECT&rect,CWnd*pParentWnd,UINTnID);创建一个窗口,dwStyle中可以使用以下一些树形控件的专用风格:TVS_HASLINES在父/了结点Z间绘制连线TVSJJNESATROOT在根/子结点之间绘制连线TVS_HASBUTTONS在每一个结点前添加一个按
2、钮,用于表示当前结点是否已被展开TVS_EDITLABELS结点的显示字符可以被编辑TVS_SHOWSELALWAYS在失去焦点吋也显示当前选中的结点TVS_DISABLEDRAGDROP不允许Drag/DropTVS_NOTOOLTIPS不使用ToolTip显示结点的显示字符在树形控件中每一个结点都有一个句柄(HTREEITEM),同吋添加结点时必须提供的参数是该结点的父结点句柄,(其中根Root结点只有一个,既不可以添加也不可以删除)利用HTREEITEMInsertltem(LPCTSTRIpszltem,HTREEITEMhParent=TVI_ROOT,HTRE
3、EITEMhlnsertAfter=TVI_LAST);可以添加一个结点,pszltem为显示的字符,hParent代表父结点的句柄,当前添加的结点会排在hlnsertAfter表示的结点的后面,返回值为当前创建的结点的句柄。下面的代码会建立一个如下形式的树形结构:-Parentl+…Child1_1+—Childl_2+—Childl_3+—Parent2-Parent3HTREEITEMhltem,hSubltem;hltem=m_tree.lnsertltem("Parent1H,TVIROOT);在根结点上添加ParentlhSubltem=m_tree.lnse
4、rtltem(nChild1_1M,hItem);//在Parentl上添加一个子结点hSubltem=m_tree.lnsertltem(,,Child1_2"Jhltem,hSubltem);//在Parent!上添加一个子结点,排在Child1_1后面hSubltem=m_tree.lnsertltem(nChild1_3n,hltem,hSubltem);hltem=m_tree.lnsertltem("Parent2",TVI_R00T,hltem);hltem=m_tree.lnsertltem("Parent3”,TVI_R00T,hltem);如果你希望在
5、每个结点前添加一个小图标,就必需先调用ClmageList*SetlmageList(ClmageList*plmageList,intnImageListType);ClmageList指向一个ClmageList对彖,如果这个值为空,则CTreeCtrl中的Image将被移除。nlmageListType有两种,TVSILNORMAL包含选择和被选择两个状态的Image,TVSILSTATE-用户定义状态的Imaqe。在调用完成后控件中使用图片以设置的ImageList中图片为准。然后调用HTREEITEMlnsertltem(LPCTSTRIpszltem,intn
6、Image,intnSelectedlmage,HTREEITEMhParent=TVI_ROOT,HTREEITEMhlnsertAfter=TVI_LAST);添加结点,nlmage为结点没被选中时所使用图片序号,nSelectedlmage为结点被选中时所使用图片序号。下面的代码演示了ImageList的设置。m_list.Create(IDB_TREE,16,4,RGB(0,0,0));mtree.SetlmageList(&mlist,TVSILNORMAL);m_tree.Insertitem(”Parentl”,0,1);//添加,选中时显示图标1,未选中时
7、显示图标0Example2:ClmageListimglist;CBitmapbitmap;imglist.Create(16,16,ILCMASK,1,1);bitmap.LoadBitmap(IDBCOMPUTER);imglist.Add(&bitmap,(COLORREF)OxFFFFFF);bitmap.DeleteObject();treectrl.SetlmageList(&mJmgList,TVSILNORMAL);此外CTreeCtrl还提供了一些函数用于得到/修改控件的状态。HTREEITEMGetSele