和9条GetListCtrl().SetItemData(....)
向其中插入数据,但是速度很慢 大概要20分钟左右,如果再按照某列排序,机器基本瘫痪。
是不是在InsertItem和SetItemData后,listctrl要刷新屏幕,导致资源浪费,能不能最后统一刷新?
有没有什么办法解决这个问题?
如果不用InsertItem和SetItemData方法还有什么途径插入数据?
请高手指点一二,谢谢!!!
5 个解决方案
#1
最后统一刷新,可以用LockWindowUpdate和UnlockWindowUpdate,来限制你在添加数据过程中界面不刷新。
#2
Using virtual lists:
http://www.codeproject.com/listctrl/virtuallist.asp
http://www.codeproject.com/listctrl/virtuallist.asp
#3
20万条数据??
这算自已画已要好久吧?
可以自已写一个CView的派生类.然后自已画,但只画当前显示的内容.
这算自已画已要好久吧?
可以自已写一个CView的派生类.然后自已画,但只画当前显示的内容.
#4
SetRedraw()主要用在当前数据窗口进行大数据量刷新或行滚动时,使用户对刷新过程不可见,缩短响应时间
m_leftTree.SetRedraw(FALSE);
读取完后再设为TRUE,刷新
另外不要Sort
m_leftTree.SetRedraw(FALSE);
读取完后再设为TRUE,刷新
另外不要Sort
#5
up
#1
最后统一刷新,可以用LockWindowUpdate和UnlockWindowUpdate,来限制你在添加数据过程中界面不刷新。
#2
Using virtual lists:
http://www.codeproject.com/listctrl/virtuallist.asp
http://www.codeproject.com/listctrl/virtuallist.asp
#3
20万条数据??
这算自已画已要好久吧?
可以自已写一个CView的派生类.然后自已画,但只画当前显示的内容.
这算自已画已要好久吧?
可以自已写一个CView的派生类.然后自已画,但只画当前显示的内容.
#4
SetRedraw()主要用在当前数据窗口进行大数据量刷新或行滚动时,使用户对刷新过程不可见,缩短响应时间
m_leftTree.SetRedraw(FALSE);
读取完后再设为TRUE,刷新
另外不要Sort
m_leftTree.SetRedraw(FALSE);
读取完后再设为TRUE,刷新
另外不要Sort
#5
up