CTreeCtrl控件InsetItem不实时显示问题

zd_moved 2015-06-25 12:33:14
大家好,请教一个问题:
我在一个for循环中调用以下语句:

for (size_t i = 0; i < 100; i++)
{
CString strTemp;
strTemp.Format(_T("%d"), i);
m_ctlTreeTest.InsertItem(strTemp);
Sleep(20);
}

为什么界面会“卡住”,就是说Tree控件没有一个一个依次显示插入的item,只是在for循环运行完成了之后才把所有的item一次全部显示出来?有人能解答下么?不胜感激!




如上图,for循环没结束时看不到插入的Item...








...全文
175 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2015-07-27
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
zd_moved 2015-06-26
  • 打赏
  • 举报
回复
引用 5 楼 zgl7903 的回复:
[quote=引用 4 楼 ZengDong_1991 的回复:] [quote=引用 2 楼 zgl7903 的回复:] m_Treel.RedrawWindow() 可以立即刷新
请问是不是默认情况下都要加这个才一个一个依次显示啊,按理说插入一个就应该立即显示吧?[/quote] 你的循环阻止了消息队列,RedrawWindow UpdateWindow等会直接发送WM_PAINT 消息, 或者可以在循环中自己派发消息[/quote] 原来是这样,懂了,多谢!!
zgl7903 2015-06-26
  • 打赏
  • 举报
回复
引用 4 楼 ZengDong_1991 的回复:
[quote=引用 2 楼 zgl7903 的回复:] m_Treel.RedrawWindow() 可以立即刷新
请问是不是默认情况下都要加这个才一个一个依次显示啊,按理说插入一个就应该立即显示吧?[/quote] 你的循环阻止了消息队列,RedrawWindow UpdateWindow等会直接发送WM_PAINT 消息, 或者可以在循环中自己派发消息
zd_moved 2015-06-25
  • 打赏
  • 举报
回复
引用 2 楼 zgl7903 的回复:
m_Treel.RedrawWindow() 可以立即刷新
请问是不是默认情况下都要加这个才一个一个依次显示啊,按理说插入一个就应该立即显示吧?
zd_moved 2015-06-25
  • 打赏
  • 举报
回复
引用 1 楼 zjh824 的回复:
才100个,不用sleep
我加sleep是想把问题重现,sleep替换为其他的操作...
zgl7903 2015-06-25
  • 打赏
  • 举报
回复
m_Treel.RedrawWindow() 可以立即刷新
zjh824 2015-06-25
  • 打赏
  • 举报
回复
才100个,不用sleep

15,979

社区成员

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

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