MFC控件积累——CTreeCtrl控件

1.树控件插入节点:函数

(1)HTREEITEM InsertItem( LPTVINSERTSTRUCT lpInsertStruct );spa

(2)HTREEITEM InsertItem( UINT nMask,
LPCTSTR lpszItem,
int nImage,
int nSelectedImage,
UINT nState,
UINT nStateMask,
LPARAM lParam,
HTREEITEM hParent,
HTREEITEM hInsertAfter
);

(3)HTREEITEM InsertItem( LPCTSTR lpszItem,
HTREEITEM hParent = TVI_ROOT,
HTREEITEM hInsertAfter = TVI_LAST
);

HTREEITEM InsertItem( LPCTSTR lpszItem,
int nImage,
int nSelectedImage,
HTREEITEM hParent = TVI_ROOT,
HTREEITEM hInsertAfter = TVI_LAST
);

返回值:若是成功则返回新项的句柄;不然返回NULL。

参数: lpInsertStruct 一个指向用来指定要插入的tree view项的属性的TVINSERTSTRUCT的指针。 nMask 用来指定要设置的属性的整数。 lpszItem 一个包含项的文本的字符串的地址。 nImage 项的图像在tree view控件的图像列表中的索引。 nSelectedImage 项的被选择图像在tree view控件的图像列表中的索引。 nState 为项的状态指定的值。 nStateMask 指定要设置的状态。 lParam 与此项关联的一个32位的应用程序指定的值。 hParent 要被插入的项的父项的句柄。 hInsertAfter 新项要被插入其后的项的句柄。 
说明:

此成员函数用来在一个tree view控件中插入一个新项。指针

这里要注意的是对函数(1)中设置节点图片时,必须将iImage和iSelectedImage同时设置为相同值才能够。而且mask使用TVIF_IMAGE|TVIF_SELECTEDIMAGEcode


2.树控件消息响应:索引

TVN_SELCHANGING:树控件被选择发送,能够控制是否选择节点,其参数中拿到的是上一次选择的节点。图片

TVN_SELCHANGED:树控件被选择发送。字符串

在消息响应时,参数获得NMHDR* 和LRESULT* 类型,但须要将NMHDR*强制转换为NMTREEVIEW*类型,之因此能够如此强制转换,缘由是:it

typedef struct tagNMTREEVIEW {
    NMHDR hdr; 
    UINT action; 
    TVITEM itemOld; 
    TVITEM itemNew; 
    POINT ptDrag; 
} NMTREEVIEW, FAR *LPNMTREEVIEW;
NMHDR类型的第一个数据类型就是NMHDR。(应该有不少须要这种强制类型转换的消息响应方式。)