小弟是一个C++菜鸟,现在初学MFC,想用CCtrlList进行大量数据更新,但是更新时程序要等待很久,好像死机了一样,怎么解决呢?求各位大牛帮帮忙!!要求在数据更新过程中用户不能进行任何操作,但是让用户干等着也不是办法。。是不是用进度条显示数据更新中能解决该问题呢?

解决方案 »

  1.   

    用虚拟列表控件
    http://hi.baidu.com/qi_xian/blog/item/929b04ce27d02c0592457ef8.html
    http://huigezrx.blog.163.com/blog/static/321016522009112904758456/
      

  2.   

    插入10条记录都要花费5秒钟
    ??
    你的CListCtrl中有很多数据???
      

  3.   

    回VisualEleven,插入10条记录都要花费5秒钟的原因是插入数据前,要得到带插入的数据,得到待插入数据的流程很复杂,有一套很复杂的算法,所以要花很长时间。。
     
      

  4.   

    回King_hhuang,你的意思是主线程显示进度条,提示“更新中”,另外的工作线程计算结果,待结果出来后,通知更新? 
      

  5.   

    活用这两句话,应该OK!
    CListCtrl::LockWindowUpdate(); CListCtrl::UnlockWindowUpdate();
      

  6.   

        m_list.SetRedraw(FALSE);
          //更新内容
          m_list.SetRedraw(TRUE);
          m_list.Invalidate();
          m_list.UpdateWindow();