在MFC中AddString的性能降低

时间:2008-11-10 01:35:01

标签: c++ performance winapi mfc

我有一个对话框,里面有几个大的组合框(每个可能有几百个项目)。在填充这些填充物的过程中有明显的延迟(确认它们是通过分析)。

我最初的想法是排序正在扼杀它的性能,但是禁用排序并使用InsertString似乎并没有让事情变得更好。我没想到看起来像是过多的物品 - 我还有什么其他的东西要做或在这里考虑?

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

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

1 个答案:

答案 0 :(得分:10)

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

如果您还没有这样做,请执行以下操作:

combo.SetRedraw(FALSE);

...  All the adds

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

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