在MFC中AddString的性能降低

Pet*_*ter 3 c++ performance winapi mfc

我有一个对话框,里面有几个大的组合框(每个可能有几百个).在建造这些建筑物的过程中有明显的延迟(通过剖析确认它们是正确的).

我最初的想法是排序正在扼杀它的性能,但是禁用排序并使用InsertString似乎并没有让事情变得更好.我没想到这似乎是一个过多的项目 - 我还应该做些什么还是在这里考虑?

MFC调用是Win32消息调用的简单包装器,所以我认为没有任何显着的开销.

DUPLICATE 如何尽可能快地将大量字符串加载到MFC组合框控件中?

Wil*_*ean 10

您应该在添加时使用CWnd :: SetRedraw,以防止控件在每次添加后更新其所有内部状态.

如果你还没有这样做,那么这样做:

combo.SetRedraw(FALSE);

...  All the adds

combo.SetRedraw(TRUE);
combo.Invalidate();
Run Code Online (Sandbox Code Playgroud)

您还应该考虑使用CComboBox :: InitStorage函数,该函数为组合框预分配内存.