listctrl控件重绘有关问题

listctrl控件重绘问题
本帖最后由 ybn187 于 2013-03-11 10:55:55 编辑
在对话框中加入了个listctrl控件,我要读取文件,把内容显示在listctrl中,数据量有10000条左右,listctrl控件重绘有关问题
我在点完打开文件后,能显示数据,在点击计算时,listctrl变灰,内存使用不断加大。
我的想法是先删除数据,再显示新数据。如果能直接覆盖也行。
计算的代码如下:
void CA_h_teDlg::OnCal() 
{
// TODO: Add your control notification handler code here
filename2="a.dat";
fstream file;
int i=0;
int t;
double x,y,z;
char  a[10];
CString b,c,d;
dat_deal(filename,filename2);
MessageBox("dealing is ok!","data",MB_OK);
SetRedraw(FALSE);
m_list.DeleteAllItems(); 
file.open(filename2);

while(1)
{
if (file.eof())
{
break;
}
file>>t>>x>>y>>z;
itoa(t,a,10);
b.Format("%.4f",x);
c.Format("%.4f",y);
d.Format("%.4f",z);
m_list.InsertItem(i,a,i);
m_list.SetItemText(i,1,b);//设置0列1行数据
m_list.SetItemText(i,2,c);
m_list.SetItemText(i,3,d);
i++;
}
SetRedraw(TRUE);
Invalidate(TRUE);
UpdateWindow();
file.close();
}

上面的dat_deal()是数据处理的程序

------解决方案--------------------
内存肯定加大的,这个避免不了,要存储数据嘛,建议用虚拟列表的方式
------解决方案--------------------
1万条数据没多少啊。我以前处理过2万条数据要快速加载到listctrl上面来,你弄到内存里面去哦。