如何让ctreectrl控件的某些节点可以编辑,某些节点不能编辑呢?

MilanSpiRiT 2009-04-25 09:51:38
设置了TVS_EDITLABELS属性以后,所有的节点都是在选中状态下再点击一下就可以编辑了,可是有些节点我想让他不能编辑?怎么做?
...全文
268 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sb3day 2009-04-26
  • 打赏
  • 举报
回复

void CLeftTree::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
CTreeCtrl* m_Tree = &GetTreeCtrl();
HTREEITEM hSelItem = m_Tree->GetSelectedItem();
HTREEITEM hParentItem = m_Tree->GetParentItem(hSelItem);
d=m_Tree->GetItemText(hSelItem);
if(hParentItem == NULL)
{ //第一层,设置可不可编辑
return;
}
hParentItem = m_Tree->GetParentItem(hParentItem);
if(hParentItem == NULL)
{//第二层,设置可不可编辑
return;
}
//第三层,设置可不可编辑
*pResult = 0;
}

那是CTreeCtrlView的,CTreeCtrl控件把上面代码的m_Tree->改成m_Tree.,删去CTreeCtrl* m_Tree = &GetTreeCtrl();
lwx300 2009-04-26
  • 打赏
  • 举报
回复
处理树控件的 TVN_BEGINLABELEDIT 消息:

void CMYDlg::OnBeginlabeleditTree1(NMHDR* pNMHDR, LRESULT* pResult) 
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;

//如果节点不能编辑,让 *pResult 返回非0。
if (hItem == pTVDispInfo->item.hItem)
{
*pResult = 1; 返回非0。
return;
}

*pResult = 0;
}

MilanSpiRiT 2009-04-26
  • 打赏
  • 举报
回复
就没有一个人帮个忙吗。。。先谢谢了啊。。
sb3day 2009-04-26
  • 打赏
  • 举报
回复

void CAView::OnButton3()
{
m_ctrlTree.ModifyStyle(0,TVS_EDITLABELS);
HTREEITEM m_hItem;
m_hItem=m_ctrlTree.GetSelectedItem();
CEdit* pEdit = m_ctrlTree.EditLabel(m_hItem);
}

void CAView::OnButton4()
{
m_ctrlTree.ModifyStyle(TVS_EDITLABELS,0);
}帮你搞定了,呵呵
[Quote=引用 5 楼 MilanSpiRiT 的回复:]
3楼的方法我用了好像不管用,就算返回非0,也会出现编辑框的。

4楼的方法是响应OnSelchanged消息,但是我不知道假如不让编辑的话该怎么设置呢??
[/Quote]
biweilun 2009-04-26
  • 打赏
  • 举报
回复
会有一个TVN_BEGINLABELEDIT通知发送给主窗口,判断是哪个节点,然后 ----- 返回1是禁止编辑,0 是同意编辑
在TVN_BEGINLABELEDIT中进行处理
MilanSpiRiT 2009-04-26
  • 打赏
  • 举报
回复
3楼的方法我用了好像不管用,就算返回非0,也会出现编辑框的。

4楼的方法是响应OnSelchanged消息,但是我不知道假如不让编辑的话该怎么设置呢??
liubuweiright 2009-04-25
  • 打赏
  • 举报
回复
关注,帮顶...

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧