CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

如何使CTreeCtrl中的某项在编辑状态下,让修改的名称有效?

楼主zxphxh(天雨)2006-03-03 11:59:06 在 VC/MFC / 界面 提问

我已调用m_TreeCtrl->EditLabel(hItem),使hItem处于编辑状态下,我想修改hItem的名称,然后在失去编辑状态后,其名称为修改后的名称。 问题点数:20、回复次数:7Top

1 楼JetLuo(JetLuo)回复于 2006-03-03 12:03:50 得分 5

void   CXXTreeCtrl::OnEndlabeledit(NMHDR*   pNMHDR,   LRESULT*   pResult)    
  {  
  TV_DISPINFO*   pTVDispInfo   =   (TV_DISPINFO*)pNMHDR;  
   
  //   Called   at   exit   from   Edit   Mode  
  pTVDispInfo   =   (TV_DISPINFO   *)pNMHDR;  
  if   (pTVDispInfo->item.pszText   !=   NULL)  
  {  
  pTVDispInfo->item.mask   =   TVIF_TEXT;  
  SetItem(&pTVDispInfo->item);  
  }  
  *pResult   =   0;  
  }  
   
  Top

2 楼BombZhang(我当大哥很久了)回复于 2006-03-03 12:51:40 得分 5

void   CTestDlg::OnEndlabeleditTreeschm(NMHDR*   pNMHDR,   LRESULT*   pResult)    
  {  
  TV_DISPINFO*   pTVDispInfo   =   (TV_DISPINFO*)pNMHDR;  
  //   TODO:   Add   your   control   notification   handler   code   here  
  CString   ssss;  
  m_Tree.GetEditControl()->GetWindowText(ssss);  
  HTREEITEM   treeitem=m_Tree.GetSelectedItem();  
   
  m_Tree.SetItemText(treeitem,ssss);  
   
  *pResult   =   0;  
  }Top

3 楼yameng(雅梦)回复于 2006-03-03 13:13:52 得分 2

编辑结束后,会发送LVN_ENDLABELEDIT通知的,所以你只要处理这个通知就可以了。Top

4 楼Mackz(在相互)回复于 2006-03-04 00:36:57 得分 2

void   CTestDlg::OnEndlabeleditTreeschm(NMHDR*   pNMHDR,   LRESULT*   pResult)    
  {  
  *pResult   =   1;  
  }Top

5 楼zxphxh(天雨)回复于 2006-03-04 16:47:26 得分 0

我又有一个问题:就是在鼠标点击CTreeCtrl中的某项(Item)后,该项处于编辑状态,等待用户修改编辑,然后利用OnEndlabeledit响应把数据保存到文件中去。现在问题是,如果用户并没有修改,也即是项的名称并没有变化,也就不需要执行保存数据操作。如何判定项的名称失去编辑状态时,项的名称没有改变?Top

6 楼BombZhang(我当大哥很久了)回复于 2006-03-05 16:23:48 得分 5

void   CTestDlg::OnEndlabeleditTreeschm(NMHDR*   pNMHDR,   LRESULT*   pResult)    
  {  
  TV_DISPINFO*   pTVDispInfo   =   (TV_DISPINFO*)pNMHDR;  
  //   TODO:   Add   your   control   notification   handler   code   here  
  CString   ssss,ssss2;  
  m_Tree.GetEditControl()->GetWindowText(ssss);//editlabel中的值  
  ssss2=m_Tree.GetItemText(m_Tree.GetSelectedItem());//树控件节点上的值  
  if(ssss==ssss2)  
  {  
  //说明项名称没变化  
  }  
  else  
        m_Tree.SetItemText(m_Tree.GetSelectedItem(),ssss);  
   
  *pResult   =   0;  
  }  
  Top

7 楼daiybh()回复于 2006-03-05 16:32:03 得分 1

http://www.cppblog.com/daiybh/archive/2005/09/29/489.htmlTop

相关问题

  • 修改文件夹名称
  • 如何用sql修改字段名称?
  • 防止修改目录名称
  • 如何修改数据库的名称?
  • 如何修改数据库的名称?
  • 如何修改ACCESS的字段名称
  • 使用XmlDom修改xml节点名称!!!
  • FSO怎么修改文件夹名称?
  • 如何修改状态条的显示:
  • 如何修改表中一列的类型以及修改约束的名称?

关键词

  • 修改
  • tv
  • ssss
  • ptvdispinfo
  • dispinfo
  • pnmhdr
  • presult
  • 名称
  • onendlabeledittreeschm
  • nmhdr

得分解答快速导航

  • 帖主:zxphxh
  • JetLuo
  • BombZhang
  • yameng
  • Mackz
  • BombZhang
  • daiybh

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo