當我單擊按鈕將項目添加到列表控件時,我的應用程序凍結。我這樣做很簡單:UI在添加項目到列表控件時凍結
for (unsigned i = 1; i < 15000;++i)
{
listcontrol1.InsertItem(i, L"item list");
}
我也嘗試使用後臺線程,但結果相同。 任何想法如何正確做到這一點,而不會阻止用戶界面?
當我單擊按鈕將項目添加到列表控件時,我的應用程序凍結。我這樣做很簡單:UI在添加項目到列表控件時凍結
for (unsigned i = 1; i < 15000;++i)
{
listcontrol1.InsertItem(i, L"item list");
}
我也嘗試使用後臺線程,但結果相同。 任何想法如何正確做到這一點,而不會阻止用戶界面?
向消息泵中注入15k消息將會很慢。
更好地使用適當緩存的virtual list control。有關工作代碼,請參見%Windows SDK Dir%\ Samples \ winui \ controls \ common \ vlistvw中的VListVW Sample。
正如盛江所說,虛擬列表是解決這個問題的最佳選擇。但是,你可以提高性能在插入過程中避免控制的畫作:
listcontrol1.SetRedraw(FALSE);
for (unsigned i = 1; i < 15000; ++i)
{
listcontrol1.InsertItem(i, L"item list");
}
listcontrol1.SetRedraw(TRUE);
這將是很好添加代碼示例或一些更多的細節,因爲它代表這個答案是一個鏈接只能回答,如果鏈接停止工作,然後它將不會對未來的用戶有所幫助。 – 2014-10-12 02:45:42
以及我想這是一個在Win32編程中的常見問題我不應該假設提問者有谷歌技能......我的壞。 – 2014-10-12 15:06:22