我使用定时器,2、3秒钟刷新一次数据,在非模态对话框中使用ListCtrl,显示数据,数据列有8项,发现当行数比较多,有滚动轴出现时,屏幕刷新现象明显,从列头到内容,都黑一屏,再出现,一跳一跳的,象动画。其实,我每次都先removeall()的数据,再从头显示各行数据,列头没有重写吧?而且,当机器性能下降时,即使数据行数很少,也是这种现象,如何才能避免这种一跳一跳的现象?
调试欢乐多
更新后用 UnlockWindowUpdate 释放之
m_wndListBox.SendMessage(WM_SETREDRAW,FALSE,0);
....
m_wndListBox.SendMessage(WM_SETREDRAW,TRUE,0);
列表框会在WM_SETREDRAW消息时重画功能恢复时重画,因此没有必要跟随对Invalidate的调用。
还可以通过用LBS_NOREDRAW来创建步进行自动重画的列表框,这种列表框只在客户区无效时才被重画。
//更新内容
m_list.SetRedraw(TRUE);
m_list.Invalidate();
m_list.UpdateWindow();
或者参考http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_cwnd.3a3a.setredraw.asp