TreeView初始化的问题

hjiaming 2004-10-18 01:50:51
多视图结构的程序,其中有一个继承于TreeView的视图,在其中的OnInitialUpdate()添加了如下代码
CTreeView::OnInitialUpdate();

CTreeCtrl& trCtrl = GetTreeCtrl();
HTREEITEM hItem;
hItem = trCtrl.InsertItem( "aaa", 0, 2 );
trCtrl.InsertItem( "bbb", 1, 3, hItem );
trCtrl.InsertItem( "ccc", 1, 3, hItem );
却发现OnInitialUpdate()函数被调用了两次??也就是说在树中会出现两个aaa bbb ccc,这是怎么一回事??
...全文
266 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjiaming 2004-10-31
  • 打赏
  • 举报
回复
解决了~~是我程序的问题,后来重建了工程之后就好了,谢谢各位大哥哦
goodsmaker 2004-10-22
  • 打赏
  • 举报
回复
每次CDocument::NewDocument都要调用,因为你是多视图,所以...
hjiaming 2004-10-22
  • 打赏
  • 举报
回复
那有没有办法让它不被调用多次??目前的解决办法也就是在添加之前先删除所有节点
hjiaming 2004-10-22
  • 打赏
  • 举报
回复
程序代码里已经去掉了文档部分的代码,只有视图结构,这样应该不会产生CDocument::NewDocument调用吧??那应该就是多视图引起OnInitialUpdate被多次调用了。
蒋晟 2004-10-21
  • 打赏
  • 举报
回复
SDJ在处理ID_FILE_NEW的时候会重复使用现有View对象,所以OnInitialUpdate可能被调用多次。
菜牛 2004-10-20
  • 打赏
  • 举报
回复
是这样的,所以在添加节点之前先删除所有节点。或者用布尔变量判断。
hjiaming 2004-10-20
  • 打赏
  • 举报
回复
是用SDI的啊
内存泄漏 2004-10-20
  • 打赏
  • 举报
回复
你不是不多点了一次File/New菜单??
蒋晟 2004-10-20
  • 打赏
  • 举报
回复
要么你创建了两个对象,要么你是用SDI
Visual_Li 2004-10-18
  • 打赏
  • 举报
回复
呵呵,看来楼主运行的时候出了些问题。
hjiaming 2004-10-18
  • 打赏
  • 举报
回复
第一次调用应该是CSplitterWnd在CreateView时产生的,第二次调用不知道是哪里来得
hjiaming 2004-10-18
  • 打赏
  • 举报
回复
调用堆栈里,两次调用下面都是CWnd::OnWndMsg()和CWnd::WindowProc()函数,但第二次调用时堆栈里面东西少很多
hjiaming 2004-10-18
  • 打赏
  • 举报
回复
逐过程跟踪了一下,发现第一次调用是系统正常调用
然后在转到AfxWndProcBase()函数,在这个函数末尾,系统提示“没有可用于当前位置的源代码”,这样反复了几次之后就又会去调用OnInitialUpdate()函数?
  • 打赏
  • 举报
回复
在那一行F9
然后
F5
huaboy408 2004-10-18
  • 打赏
  • 举报
回复
设置断点调试一下
快乐鹦鹉 2004-10-18
  • 打赏
  • 举报
回复
然后就知道这个消息是从哪里传递过来的了。
快乐鹦鹉 2004-10-18
  • 打赏
  • 举报
回复
在OnInitUpdate函数中增加断点。当程序停在断点的时候,看看Call Stack中的函数都是些什么
lixiaosan 2004-10-18
  • 打赏
  • 举报
回复
你单步跟踪试试看,我的没有
hjiaming 2004-10-18
  • 打赏
  • 举报
回复
怎么跟踪函数调用?小弟初学,不懂
快乐鹦鹉 2004-10-18
  • 打赏
  • 举报
回复
调查一下,两次调用都是什么时候产生的
加载更多回复(2)

16,550

社区成员

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

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

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