2014-10-08 69 views
0

當我單擊按鈕將項目添加到列表控件時,我的應用程序凍結。我這樣做很簡單:UI在添加項目到列表控件時凍結

for (unsigned i = 1; i < 15000;++i) 
{ 
    listcontrol1.InsertItem(i, L"item list"); 
} 

我也嘗試使用後臺線程,但結果相同。 任何想法如何正確做到這一點,而不會阻止用戶界面?

回答

1

向消息泵中注入15k消息將會很慢。

更好地使用適當緩存的virtual list control。有關工作代碼,請參見%Windows SDK Dir%\ Samples \ winui \ controls \ common \ vlistvw中的VListVW Sample

+0

這將是很好添加代碼示例或一些更多的細節,因爲它代表這個答案是一個鏈接只能回答,如果鏈接停止工作,然後它將不會對未來的用戶有所幫助。 – 2014-10-12 02:45:42

+0

以及我想這是一個在Win32編程中的常見問題我不應該假設提問者有谷歌技能......我的壞。 – 2014-10-12 15:06:22

1

正如盛江所說,虛擬列表是解決這個問題的最佳選擇。但是,你可以提高性能在插入過程中避免控制的畫作:

listcontrol1.SetRedraw(FALSE); 
for (unsigned i = 1; i < 15000; ++i) 
{ 
    listcontrol1.InsertItem(i, L"item list"); 
} 
listcontrol1.SetRedraw(TRUE);