CtreeCtrl 动态插入子节点

yzcurry 2009-02-08 11:12:52
我的问题是这样的
如果有下列一个tree列表图
A
|
— B
| |
| — B1
| |
| — B2
|—C
|
— C1
|
— C2

我现在就是想动态(我执行一个操作,然后发一个消息让它插入)往 B下面插子节点
我直接用了 m_tree->InsertItem(_T("dd"), 0, 0, m_htrFilter);
m_htrFilter是B点的
但插完了什么效果都没有,不知道什么原因
谢谢
...全文
478 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzcurry 2009-02-09
  • 打赏
  • 举报
回复
此问题用另外的方法本人解决了
总结一下,本人用了new的方式创建的树在添加的时候确实是存在这个问题,我找不到有问题的地方,所以我猜想这个问题应该是由于某个或某些设置有问题,由于项目时间紧,没有深究,有时间我把这搞明白了,后来用的添加控件的方式,就没有发生这样的问题了。还是控件方便啊,但有时候还是new出来的简洁。
好了我一会把分分分
cnzdgs 2009-02-08
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 yzcurry 的回复:]
我用的对话框添加的就是正确的,可以插入,没有什么不一样的地方啊?
郁闷了
[/Quote]
现在是用什么做的?
可以试试添加之后执行m_tree->Invalidate()。
yzcurry 2009-02-08
  • 打赏
  • 举报
回复
我用的对话框添加的就是正确的,可以插入,没有什么不一样的地方啊?
郁闷了
yzcurry 2009-02-08
  • 打赏
  • 举报
回复
看了,还是没有出现,是不是创建的时候有什么标志让它可以动态加入数据啊
yzcurry 2009-02-08
  • 打赏
  • 举报
回复
看了,还是没有出现,是不是创建的时候有什么标志让它可以动态加入数据啊
arong1234 2009-02-08
  • 打赏
  • 举报
回复
估计没有刷新吧。既然插入成功了,肯定在哪,你把每个节点合上再展开看看

[Quote=引用 10 楼 yzcurry 的回复:]
不是null,我查看过了值是 0x00161438,这是正常的
[/Quote]
yzcurry 2009-02-08
  • 打赏
  • 举报
回复
不是null,我查看过了值是 0x00161438,这是正常的
cnzdgs 2009-02-08
  • 打赏
  • 举报
回复
那就是成功了,你在界面上操作展开节点,看不到新插入的项吗?
cnzdgs 2009-02-08
  • 打赏
  • 举报
回复
InsertItem返回值是NULL吗?
yzcurry 2009-02-08
  • 打赏
  • 举报
回复
插入的返回值也不是null
yzcurry 2009-02-08
  • 打赏
  • 举报
回复
这个值是我保存的,m_tree是一个new出来的对象,m_htrFilter是保存的,我用程序获取的值与我保存的值是一样的。
然后我用GetItemText获取出来的文字也是对的,它应该是没有问题
cnzdgs 2009-02-08
  • 打赏
  • 举报
回复
这行代码没问题,如果返回NULL就表示失败了。m_tree和m_htrFilter是怎么得到的?
yzcurry 2009-02-08
  • 打赏
  • 举报
回复
m_tree 我是这样 m_tree->Create(TVS_HASBUTTONS |
TVS_HASLINES | TVS_LINESATROOT | TVS_EDITLABELS |
WS_BORDER | WS_TABSTOP,
rect,this,TREE_WATCH_ID);创建的
arong1234 2009-02-08
  • 打赏
  • 举报
回复
m_tree->InsertItem(_T("dd"), m_htrFilter); 应该就可以吧:)

感觉你代码没问题,除非m_htrFilter不是B的HTREEITEM值
yzcurry 2009-02-08
  • 打赏
  • 举报
回复
回复楼上
m_htrFilter是有效值
我用根节点插入就没有问题
xsc2001 2009-02-08
  • 打赏
  • 举报
回复
请查看你在InsertItem的时候父节点的句柄(m_htrFilter)是否确实有效。
再一个插入后调用Expand打开收缩的节点。
windows自带的注册表编辑器并没有把所有的项都显示出来,出于好奇,自己写了个简易的注册表编辑器,以查看隐藏的东西~~ 界面跟自带的很像,里面的小图标都是从自带里导出来的。 具有的功能: 1.浏览键(key)、值(value); 2.插入、修改REG_SZ、REG_EXPAND_SZ、REG_MULTI_SZ、REG_DWORD、REG_DWORD_BIG_ENDIAN、REG_QWORD六种值类型(value)的名称跟数据; 3.删除所有类型的键值(value); 4.插入键(key),删除不含子键的键(key); 5.左侧树形窗口右键点击时是收缩节点,方便浏览; 6.自带的每个键它都会显示默认(就是名称为空的)键值(value),而我则是严格按照RegEnumValue的结果来显示; 通过使用并跟自带的比较后发现: XP系统下,自带的隐藏了HKEY_PERFORMANCE_DATA、HKEY_PERFORMANCE_TEXT、HKEY_PERFORMANCE_NLSTEXT的显示,不过这三个键都不含子键,只含值,不知为何,这三个键的默认键值打不开,提示参数不正确。需要注意的是,打开这三个键时,会有点卡。 WIN7下,自带的还隐藏了HKEY_PT的显示,里面似乎REG_QWORD类型的键值很多。 由于我的小程序查错步骤很多,一有错误就会显示出来(要么是弹出消息框,要么是在标题栏显示),因此发现了很多有趣的地方,比如:HKEY_LOCAL_MACHINE\SECURITY和HKEY_LOCAL_MACHINE\SAM\SAM的权限很高,连KEY_READ都打不开,因此自带的没显示这两个键的内容,不知道的还以为确实没内容,其实是注册表API函数打不开的缘故; 另外需要注意的是,打开HKEY_CLASSES_ROOT节点时,由于其子项很多,所以会卡住一会儿,请耐心等待。 里面有一个封装了操作注册表的类CRegKey。 里面还有一个截图软件,其两个附加功能或许对你日常生活有帮助,一个是VC的error lookup程序的功能,一个是表达式计算器的功能,你可以在其托盘隐藏时使用热键Ctrl+F8和Ctrl+F9打开、关闭,非常便捷; 里面还可以参考一下CTreeCtrl的Expand函数只能触发一次TVN_ITEMEXPANDING or TVN_ITEMEXPANDED消息问题的解决方法。 有问题联系:hastings1986@163.com

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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