8.3重要

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) 样式

树控件 (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) 层次结构的图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值