当我点击按钮将项目添加到列表控件时,我的应用程序冻结了。我做得很简单:
for (unsigned i = 1; i < 15000;++i)
{
listcontrol1.InsertItem(i, L"item list");
}
我也尝试使用后台线程,但结果相同。 知道如何在不阻塞用户界面的情况下正确执行此操作吗?
答案 0 :(得分:1)
向消息泵中输入15k消息将会很慢。
最好使用virtual list control进行适当的缓存。有关工作代码,请参阅%Windows SDK目录%\ Samples \ winui \ controls \ common \ vlistvw中的VListVW Sample。
答案 1 :(得分:1)
正如盛江所说,虚拟列表是这样一个伟大列表的最佳解决方案。但是你可以在插入过程中提高性能,避免控制绘画:
listcontrol1.SetRedraw(FALSE);
for (unsigned i = 1; i < 15000; ++i)
{
listcontrol1.InsertItem(i, L"item list");
}
listcontrol1.SetRedraw(TRUE);