小技巧:CListCtrl插入大量数据的优化

小技巧:CListCtrl插入大量数据的优化

作者:HQ |  时间:2018-08-19 |  浏览:685 |  评论已关闭 条评论

CListCtrl列表控件在开发中使用的比较多,当我们一次性插入大量数据时,因为控件会在每次插入项目后进行重绘,这就大大降低了界面的性能,也会带来界面的频繁闪烁。通过使用SetRedraw这个API,我们可以在插入大量数据之前禁止列表控件重绘,当所有数据条目插入完毕后再启用重绘,这样就可以显著提高性能并减少界面闪烁。
下面我们来实际的代码示例:

改善前

m_listCtrl.DeleteAllItems();
for (int i=0 ;i<5000;i++)  
{
	CString str;  
	str.Format(_T("Test item %d"),i);  
	m_listCtrl.InsertItem(i, str);
}

改善后

m_listCtrl.SetRedraw(FALSE);    // 新加行:禁用重绘
m_listCtrl.DeleteAllItems();
for (int i=0 ;i<5000;i++)  
{
	CString str;  
	str.Format(_T("Test item %d"),i);  
	m_listCtrl.InsertItem(i, str);
}
m_listCtrl.SetRedraw(TRUE);    // 新加行:启用重绘

总结
在实际工程中,我们在开发主体功能的同时,也应该关注一下界面的用户体验。
良好的用户体验将会提高产品的吸引力和使用舒适度。

标签:

评论已关闭。