我制作了一个刷新CTreeCtrl的功能,首先用DeleteAllItems函数删除原来的项,然后重新插入。在当前有约900项的情况下,实际执行时花了超过2分钟;然而如果用单步执行,总共花了2~3秒。其中执行时间最长的DeleteAllItems函数也只花了不到2秒。这是为何????谢谢

解决方案 »

  1.   

    主要是每次插入操作,CTreeCtrl都会更新视图,所以次数一多就慢了,重画900次啊,要是它发现控件不用重画(别挡住了),不重绘视图,就快很多啦,DeleteAllItems也只重绘一次。所以就这样了,你把CTreeCtrl隐藏了再插入,插入完后再显示,也很快,要不你就去窃获CTreeCtrl的WM_PAINT消息试试,期间的忽略,最后你设个标记,就不忽略了。
      

  2.   

    原来时这样,谢谢啊。不过我觉得不是插入的问题,因为实际上,我是删除900项,再插入10项时出的问题。插的还是很快的。另外你说的隐藏怎么做啊,只能改OnPaint?, 因为我用的是CTreeView。