当前位置: 首页 > news >正文

在TreeCtrl中使用Edit功能

以前常常有人问起怎样保存TreeCtrl中EditLables编辑过的内容,虽然有相关的文章,但是老是有人说不能用。
    首先了讲该TreeList应该使用TVS_EDITLABELS风格,可以在创建资源时指定,或者在使用Create时指定,或者在PreCreateWindos()中改变。我的代码是:
const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS | TVS_EDITLABELS;
 
 if (!m_wndTree1.Create (dwViewStyle, rectDummy, &m_wndTabs, 2) || !m_wndTree2.Create (dwViewStyle, rectDummy, &m_wndTabs, 3))
 {
  TRACE0("Failed to create workspace view\n");
  return -1;      // fail to create
 }
红色的部分是关键!这样你就可以通过当即Treeitem来编辑其标题了!
接下来需要处理TVN_BEGINLABELEDIT和TVN_ENDLABELEDIT消息。 
void CMyTree::OnBeginLabelEdit(NMHDR* pNMHDR, LRESULT* pResult) 
{
        TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
        
        // Limit text length
        GetEditControl()->LimitText(127);
        *pResult = 0;
}
 
 
如果不处理 TVN_ENDLABELEDIT 消息,则文本的更改不会生效。
 void COutline::OnEndLabelEdit(NMHDR* pNMHDR, LRESULT* pResult) 
{
        GetEditControl()->GetWindowText(s);
        // Set result to TRUE to accept the changes
        *pResult = TRUE;
}
注:上面这段代码来自闻逸洋《在TreeList中使用Edit功能》
    这里,你可以新建一个类,CMyTree,然后再通过ClassWizard为其添加TVN_BEGINLABELEDIT和TVN_ENDLABELEDIT消息
ClassWizard为我们做出来的代码为:
protected:
 //{{AFX_MSG(CMyTree)
 afx_msg void OnBeginlabeledit(NMHDR* pNMHDR, LRESULT* pResult);
 afx_msg void OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult);
 //}}AFX_MSG

好了,编译通过以后你就可以通过当即Treeitem来编辑并保存其标题了!


本文转自雷志刚 51CTO博客,原文链接:http://blog.51cto.com/leizhigang/237930



相关文章:

  • 每个分类取最新的几条的SQL实现
  • 第100篇博文纪念 | C# 根据数据库表结构生成DOC数据库文档(1)
  • Drawable、Bitmap、Canvas和Paint的关系以及部分使用方法
  • 嫌访问速度慢?教你秒速打开你的WordPress
  • 玩转Bootstrap(JS插件篇)-第1章 模态弹出框 :1-1导入JavaScript插件
  • 借用Snippet插件美化博客中的代码
  • Python的CSV模块
  • IT运维管理之自动化运维篇
  • zookeeper分布式安装
  • 百度面试题:求绝对值最小的数
  • 3-9 读写缓存流 ——BufferedStream类
  • Java线程:线程私有变量
  • 使用Seam-gen生成基础项目骨架
  • 计算机中的颜色XII——快速计算纯色的色相值(新的公式)
  • juniper交换机 mac地址和端口绑定
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 《剑指offer》分解让复杂问题更简单
  • Android框架之Volley
  • Angular数据绑定机制
  • C语言笔记(第一章:C语言编程)
  • extjs4学习之配置
  • Github访问慢解决办法
  • Just for fun——迅速写完快速排序
  • Mocha测试初探
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • spring + angular 实现导出excel
  • Tornado学习笔记(1)
  • vue:响应原理
  • 高度不固定时垂直居中
  • 类orAPI - 收藏集 - 掘金
  • 排序(1):冒泡排序
  • 如何在GitHub上创建个人博客
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  •  一套莫尔斯电报听写、翻译系统
  • 一天一个设计模式之JS实现——适配器模式
  • 原生 js 实现移动端 Touch 滑动反弹
  • # Panda3d 碰撞检测系统介绍
  • (26)4.7 字符函数和字符串函数
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (八)c52学习之旅-中断实验
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (接口封装)
  • (未解决)macOS matplotlib 中文是方框
  • (一)基于IDEA的JAVA基础12
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转载)Linux 多线程条件变量同步
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .Net IE10 _doPostBack 未定义
  • .Net IOC框架入门之一 Unity
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .net Stream篇(六)
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .Net的DataSet直接与SQL2005交互
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数