
例如: CImageList m_imageList;
//创建CImageList对象
m_imageList.Create(16, 16, ILC_COLOR8, 0, 4);
//加载图标
m_imageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_ROOT));
树形控件有两个非常重要的数据结构:TV_ITEM和TV_INSERTSTRUCT。前者用来描述一个树节点的信息;后者描述要插入树时所需的信息。结构如下:
typedef struct _TV_ITEM {
UINTmask;//结构成员有效性屏蔽位
HTREEITEM hItem;//数据项控制句柄
UINTstate;//数据项状态
UINTstateMask;//状态有效性屏蔽位
LPSTRpszText;//数据项名称字符串
intcchTextMax; //数据项名称的最大长度
intiImage;//数据项图标索引号
intiSelectedImage; //选中数据项图标索引号
intcChildren;//子项标识
LPARAMlParam;//程序定义的32位数据TVIF_PARAM
} TV_ITEM, FAR *LPTV_ITEM;
typedef struct _TV_INSER TSTRUCT
{
HTREEITEM hParent;//父项控制句柄
HTREEITEM hInsertAfter; //插入树项的位置
TV_ITEM item;//数据项的结构
} TV_INSERTSTRUCT, FAR *LPTV_INSERTSTRUCT;
使用CImageList可以方便的为CTreeCtrl提供图标。首先设置树形控件的图形列表: m_treeStruct.SetImageList(&m_imageList,TVSIL_NORMAL);
然后在添加树形列表节点时可以设置节点的选中时图标索引和未选中时的图标索引。cimagelistcimagelist如果没有设置,则数据结构会默认为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);
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-36348-1.html
武器的火力强度