还是我那个科技创新项目,需要获取树形控件的节点编号,我觉得应该有对应的函数,查看CTreeCtrl的成员函数,发现有一个很像:GetItemData(HTREEITEM hItem),但仅仅是像而已!
TVITEM用来存储树形控件节点的信息,定义如下: typedef struct tagTVITEM { UINT mask; HTREEITEM hItem; UINT state; UINT stateMask; LPTSTR pszText; int cchTextMax; int iImage; int iSelectedImage; int cChildren; LPARAM lParam; } TVITEM, *LPTVITEM; 原来GetItemData(HTREEITEM hItem)就是用来取出lParam的值的,而SetItemData(HTREEITEM hItem,DWORD_PTR dwData)就是用来设置lParam的值的;因此我们可以在初始化树形控件时SetItemData设置节点编号,在需要节点编号时GetItemData即可!
顺便说明一下几个跟树形控件有关的结构体: TVITEM //用来存储树形节点的信息
typedef struct tagTVINSERTSTRUCT { HTREEITEM hParent; HTREEITEM hInsertAfter; #if (_WIN32_IE >= 0x0400) union { TVITEMEX itemex; TVITEM item; } DUMMYUNIONNAME; #else TVITEM item; #endif } TVINSERTSTRUCT, *LPTVINSERTSTRUCT; //在初始化树形控件插入节点时用到的结构体
typedef struct _TREEITEM FAR* HTREEITEM; //MSDN上说它是用来标识树形控件节点的句柄 FAR*即far*,远指针,在9x下开发时,16bit指针最大只能指向64k内存,远指针可以超出此限制,可以在不同 数据段间移动。win32以后就没有了far*, 因为都是32bit。 _TREEITEM是微软内部的数据结构,直接拿来用就是了。