我的目标是以1秒的频率重新绘制我的MFC应用中的CListCtrl
以刷新其内容。我使用以下伪代码来做到这一点:
//CListCtrl lstLog;
//Prevent redrawing
lstLog.SetRedraw(FALSE);
//Remove all items
lstLog.DeleteAllItems();
for(int i = 0; i < 100; i++)
{
lstLog.InsertItem(i, str);
}
//Scroll to the bottom of the list
int scrollY = lstLog.GetItemCount() * nItemHeight;
//Allow back redrawing
lstLog.SetRedraw(TRUE);
lstLog.Scroll(CSize(0, scrollY));
除非垂直滚动条在使用此方法时闪烁或快速上下跳动,否则效果很好。
我能做些什么来防止这种情况吗?
答案 0 :(得分:0)
两件事:
LockWindowUpdate()
。编写一个RAII助手,在重新填充时锁定列表框。确保检查呼叫结果,并且只有在第一次呼叫成功时才在dtor中将其反转,以免干扰嵌套呼叫。