问题:软件需要从网络上每次获取一个10000byte的数据包,并通过列表实时显示出来。列表有两列,除去表头,有10000行。开始用MFC自带的ListCtrl控件,每次获得10000个的数据显示的时候刷新需要很长时间,显示很慢。
解决方法:使用虚拟列表。
具体步骤:
1.将ListCtrl控件的OwnerData属性从默认的FALSE改为TRUE;(我的理解是为TRUE的话,数据由系统维护而不是列表控件维护,不理解这个也不影响后面的进程);
2.定义一个全局的CString[10000]的数组,当接收数据线程收到一包数据之后,将数据格式化为字符串存入该数组;
3.为ListCtrl控件添加一个CListCtrl类的变量m_list_FBG;
4.为ListCtrl控件添加消息LVN_GETDISPINFO