1、添加响应函数步骤如下:
1)、在头文件LeftView.h(树控件所在的View)里添加响应处理函数
BEGIN_MESSAGE_MAP(LeftView, CView)
//{{AFX_MSG_MAP(LeftView)
ON_WM_CREATE()
ON_WM_SIZE()
//}}AFX_MSG_MAP
ON_NOTIFY(NM_DBLCLK,IDM_TREECTRL, OnDblclkListCtrl)//树控件双击消息响应映射
END_MESSAGE_MAP()
2)、MESSAGE_MAP表中定义了消息响应函数,增加消息映射
BEGIN_MESSAGE_MAP(LeftView, CView)
//{{AFX_MSG_MAP(LeftView)
ON_WM_CREATE()
ON_WM_SIZE()
//}}AFX_MSG_MAP
ON_NOTIFY(NM_DBLCLK,IDM_TREECTRL, OnDblclkListCtrl)//树控件双击消息响应映射
END_MESSAGE_MAP()
3)、编写消息响应函数
void LeftView::OnDblclkListCtrl(NMHDR* pNMHDR, LRESULT* pResult)
{
AfxMessageBox("OnDblclkListFile()");
*pResult = 0;
}
2、SetItemState和GetItemState函数的使用
我们常需要调用SetItemState和GetItemState对某个节点状态进行设置和查询。例如我们可以使用GetItemState得到某个节点是否被展开。
BOOL ItemState=ListCtrl.GetItemState(SelectedItem, TVIS_EXPANDED)&TVIS_EXPANDED;//判断树型控件的某一个目录项(这里为SelectedItem)是否展开
使用GetChildItem(SelectedItem)得到SelectedItem子节点(也可能是通过DeleteItem()删除其子节点)会使控件处于展开状态,即ItemState值为真。要想ItemState为假可以通过SetItemState函数重置其状态。
例如:ListCtrl.SetItemState(SelectedItem,0,TVIS_EXPANDED);
SetItemState函数的原型如下:
BOOL SetItemState( HTREEITEM hItem, UINT nState, UINT nStateMask );
其中的UINT nState可以取如下值:
typedef struct _TREEITEM FAR* HTREEITEM;
#define TVIF_TEXT 0x0001
#define TVIF_IMAGE 0x0002
#define TVIF_PARAM 0x0004
#define TVIF_STATE 0x0008
#define TVIF_HANDLE 0x0010
#define TVIF_SELECTEDIMAGE 0x0020
#define TVIF_CHILDREN 0x0040
#if (_WIN32_IE >= 0x0400)
#define TVIF_INTEGRAL 0x0080
#endif
#define TVIS_SELECTED 0x0002
#define TVIS_CUT 0x0004
#define TVIS_DROPHILITED 0x0008
#define TVIS_BOLD 0x0010
#define TVIS_EXPANDED 0x0020
#define TVIS_EXPANDEDONCE 0x0040
#if (_WIN32_IE >= 0x0300)
#define TVIS_EXPANDPARTIAL 0x0080
#endif
一些值的意思如下:
TVIS_SELECTED
项被选中.
TVIS_EXPANDED
项的子项被展开.
TVIS_EXPANDEDONCE
项的子项曾经被展开过.
TVIS_CUT
项被选择用来进行剪切和粘贴操作.
TVIS_FOCUSED
项具有输入焦点.
TVIS_DROPHILITED
项成为拖动操作的目标.
3、树控件 (Tree Control) 样式
树控件 (Tree Control) (CTreeCtrl) 样式决定树控件 (Tree Control) 外观特征。创建树控件 (Tree Control) 时,就设置了树控件 (Tree Control) 的初始样式。创建了树控件 (Tree Control) 后,可以检索和更改树控件 (Tree Control) 的样式,方法是利用 GetWindowLong 和 SetWindowLong Windows 函数为 nIndex参数指定 GWL_STYLE。有关完整的样式列表,请参见 Platform SDK 中的树视图 (TreeView) 控件窗口样式。
TVS_HASLINES 样式通过在子项与其相应的父项之间画上一条连线,增强了树控件 (Tree Control) 层次结构的图