如何对CTreeCtrl中 选中的节点进行文本编辑?

ilovesnow 2003-11-18 07:52:14
各位大虾:

我下在需要在我的对话框中,(已有一个CTreeCtrl变量m_pCtrl) 我想实现类是与windows 资源管理器的功能,即对每个子节点能进行“添加、删除、重命名”等操作。可是我现在卡在“重命名”上了,(即给每个节点改个名字)希望高人指点!!!
下面的网页 提供了一个方法,我试了好像不行啊! 请高人帮偶看看!!!


http://www.powerba.com/develop/vc/article/20010726011.htm

http://zsjacky.nease.net/vc++/index/index142.htm

http://fxstudio.nease.net/article/article-01.htm
...全文
449 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤必有邻 2003-11-19
  • 打赏
  • 举报
回复
重载消息TVN_ENDLABELEDIT的处理函数,并添加如下代码:
void CITreeDlg::OnEndlabeleditTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
NMTVDISPINFO * p=(NMTVDISPINFO*)pNMHDR;
if(p->item.pszText)
{
m_tree.SetItemText(p->item.hItem,p->item.pszText);
//m_bModified=TRUE;//记录数据已被修改,退出时提示保存
}
*pResult = 0;
}
liuxianzhi 2003-11-19
  • 打赏
  • 举报
回复
HTREEITEM curNode=m_Fenlei.GetSelectedItem();
if(curNode==NULL)return;
m_Fenlei.EditLabel(curNode);
用EditLabel就可以把修改激活,你只要输入任何想要的内容就行了阿。
gaoxiaopai 2003-11-19
  • 打赏
  • 举报
回复
void ListAll::abc()
{
HTREEITEM item = m_TreeCtrl.GetSelectedItem();
m_TreeCtrl.DeleteItem(item);
}
这是删除
如果要改名,我建议每次显示都查数据库,改名就是改变数据库里的纪录
void ListAll::abc()
{
HTREEITEM item = m_TreeCtrl.GetSelectedItem();
HTREEITEM hTItem=m_TreeCtrl.GetParentItem(item );
m_TreeCtrl.DeleteItem(item);
HTREEITEM itemr=m_TreeCtrl.InsertItem( "OK", 0, 0, hTItem);
}
这是把名字改为"Ok"
ilovesnow 2003-11-19
  • 打赏
  • 举报
回复
各位大侠:
以下时网上的贴子:
我在运行时,3D 1;总是报错,
3D 是个什么啊??? IMG_CLOSEDFOLDER ); 这个参数也报错!!!请指正!!!

如何选择 CTreeCtrl 中的节点文本进行编辑?

  在向 CTreeCtrl 中加入一项后,有什么方法可以编辑该节点的文本呢?
  首先设置你的 CcompTreeCtrl 具有 TVS_EDITLABELS 属性。在设计时用控件属性来设置在运行时用 GetStyle()/SetStyle() 成员函数来设置。然后请看下述代码:

HTREEITEM CCompTreeCtrl::AddSet()
{
static int setCnt =3D 1;
HTREEITEM hItem;
CString csSet;

//create text for new note: New Set 1, New Set 2 ...
csSet.Format( _T( "New Set %d" ), setCnt++ );

hItem =3D InsertItem( csSet, IMG_CLOSEDFOLDER, IMG_CLOSEDFOLDER );

if( hItem !=3D NULL )
EditLabel( hItem );

return hItem;
}
wuxfBrave 2003-11-19
  • 打赏
  • 举报
回复
给我拟的代码,ok?给我端消息
wuxfBrave 2003-11-19
  • 打赏
  • 举报
回复
m_pCtrl.ModifyStyle(0, TVS_EDITLABELS)
ilovesnow 2003-11-19
  • 打赏
  • 举报
回复
可是我的空件不是定义在对话框中的,我是定义了一个CTreeCtrl* m_pTree变量它的值是从CTreeView 中得来的!
CTreeView::OnInitialUpdate();
m_pCtrl = &GetTreeCtrl();

CTreeCtrl 有没有 设置属性的函数啊?我找了半天,没有找到CTree控件的Style函数!谁能告诉我如何通过函数设置控键的属性啊?
mahatma_cn 2003-11-19
  • 打赏
  • 举报
回复
同意楼上的,设置此风格
wuxfBrave 2003-11-19
  • 打赏
  • 举报
回复
看过了,只要在对话框资源编辑中设置edit labels就可以了

15,976

社区成员

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

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