2008-11-10 22 views
3

我有一個對話框,裏面有幾個大的組合框(每個可能有幾百個項目)。在施工過程中存在顯着的延遲,而這些都是人口稠密的(通過分析確認是他們的)。在MFC中添加字符串的性能下降

我最初的想法是,排序是殺死它的性能,但禁用排序和使用InsertString似乎並沒有讓事情變得更好。我沒有想到,這似乎是一個過多的項目 - 有什麼我應該做的或考慮在這裏?

MFC調用是Win32消息調用的簡單包裝,所以我不認爲這裏有任何重大的開銷。

DUPLICATE How to load a large array of strings in to an MFC combobox control fast as possible?

+0

http://stackoverflow.com/questions/229395/how-to-load-string-of-array-in-to-combobox-faster-in-mfc 同一問題plz close – yesraaj 2008-11-10 08:10:11

回答

10

您應該使用的CWnd :: SetRedraw周圍的增加,防止控制更新其所有的內部狀態的每個添加之後。

如果你不是已經在做了,那麼這樣做:

combo.SetRedraw(FALSE); 

... All the adds 

combo.SetRedraw(TRUE); 
combo.Invalidate(); 

你也應該考慮使用CComboBox::InitStorage功能,預先分配內存的組合框。