我有个程序,其中有个ListCtl的控件,我想点击一个按钮,让他显示记录,由于记录数比较多(几十万条)因此用常规方法添加的时候,速度非常慢,如死机一般,请问有什么方法可以改变这种状况

解决方案 »

  1.   

    虚列表啊。选中owner_data选项,然后重载ON_NOTIFY_REFLECT(LVN_GETDISPINFO, OnGetdispinfo)
      

  2.   

    先用SetItemCount(),再用一个辅助线程调用InsertItem(),这样能保证gui线程不会锁死如果对界面时间要求比较高, 还需要改进算法, 比如界面 listctrl 的高度能显示 10 个item, 那么, 如果算法在后台每计算出 10 个就通知界面, 用消息 WM_SETREDRAW 去掉添加时重画。
      

  3.   

    试试这个:http://www.evget.com/view/viewProductInfo.asp?productId=109
    据称是全球最快的List控件,可以处理超过20亿项的数据
      

  4.   

    m_listCtrl.SetRedraw(FALSE);
    ...
    m_listCtrl.SetRedraw(TRUE);