【问题标题】:Slow performance of AddString in MFC [duplicate]MFC中AddString的性能缓慢[重复]
【发布时间】:2008-11-10 01:35:00
【问题描述】:

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

我最初的想法是排序正在扼杀它的性能,但禁用排序并改用 InsertString 似乎并没有让事情变得更好。我没想到这似乎是过多的项目 - 我还有其他事情应该做或考虑吗?

MFC 调用是 Win32 消息调用的微不足道的包装,所以我认为那里没有任何重大开销。

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

【问题讨论】:

标签: c++ performance winapi mfc


【解决方案1】:

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

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

combo.SetRedraw(FALSE);

...  All the adds

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 2015-01-27
    • 2021-06-04
    • 2016-11-09
    • 2021-06-21
    相关资源
    最近更新 更多