树形控件的重命名问题

树控件在很多时候都可以用得到,本来觉得网上应该有很多资料,可以找个例子几行行代码就可以解决了的,

但是google了一下,关键字“树形控件 重命名”搜到的网页都不是我想要的,找了两个左右有用的网页看了一下,感觉都没有完全说清楚,


我决定先把必要的东西加上,然后边调边试,总算成功了,不说废话,看下面


首先加上树形控件的两个通知消息:TVN_BEGINLABELEDIT,TVN_ENDLABELEDIT,在响应函数中添加这两个消息的响应函数

void CFileView::OnTvnBeginLabelEditTree(NMHDR* pNMHDR, LRESULT* pResult)
{
   LPNMTVDISPINFO pTVDispInfo = reinterpret_cast<LPNMTVDISPINFO>(pNMHDR);

}

void CFileView::OnTvnBeginLabelEditTree(NMHDR* pNMHDR, LRESULT* pResult)
{
   LPNMTVDISPINFO pTVDispInfo = reinterpret_cast<LPNMTVDISPINFO>(pNMHDR);
  TV_ITEM* ptvItem = &pTVDispInfo->item;

// 获取修改后的名称
CString LabelStr = ptvItem->pszText;

// 对新输入的名称作一些限制
if(LabelStr == "")
{
   return;
}

// 设置新名称
HTREEITEM curItem = ptvItem->hitem;
if(curItem)
{
//treeCtrl 是CTreeCtrl的一个对象 
   treeCtrl.SetItemText(curItem, LabelStr);
}
}



添加一个“重命名”的菜单或者按钮,在其响应函数中加上下面几句代码,就可以实现重命名了

void CFileView::OnTreeRename()
{
    HTREEITEM hSltItem = treeCtrl.GetFirstSelectedItem();
   if(hSltItem)
{
   CEdit* pLabelEdit = treeCtrl.EditLabel(hSltItem);
   ASSERT(pLabelEdit != NULL);
}
}
还需要注意一点,需要将树控件的树形设置能够编辑,就是要有TVS_EDITLABELS这个属性


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值