c++ - 向 MFC 组合框添加大量字符串

标签 c++ combobox mfc

我有大量的字符串要加载到 MFC 组合框。为了设置组合框的宽度,我对每个字符串使用 GetTextExtent 并设置组合框的最大范围。这是非常耗时的,因为调用 GetTextExtent 总体上需要大量时间。当添加 25000 个字符串时,这会变得非常昂贵。还有其他方法可以获得我可以在组合框上设置的确切宽度吗?

最佳答案

方法 1:查找最坏情况要求

开始于: Which letter of the English alphabet takes up most pixels?

看起来字符W是最宽的字符。 (或者使用循环来查找最宽的字符)您可以检查最大字符串的长度,并使用 W 填充所有字符来创建一个相同长度的字符串。现在,如果该字符串适合您,则该字符串的宽度给出了组合框的最坏情况要求。

方法 2:保存一些通话

求最宽字符和最短字符的比率。现在求最大字符串的长度。现在进行第二次迭代,发现字符串的宽度仅等于字符串的长度大于largest_length *ratio。这将节省一些调用。

关于c++ - 向 MFC 组合框添加大量字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35987181/

相关文章:

java - 如何区分 JComboBox 中的 setSelectedItem 调用和 actionPerformed 方法

c++ - CString 无法从资源加载日语字符串

c++ - 如何更改 SysDateTimePick32 或 CDateTimeCtrl 的背景颜色?

c# - 无法将 winform 控件大小传递给非托管代码

c++ - 词法和语法分析器软件

c++ - 如何在私有(private)继承中调用父成员?

c++ - 将指针传递的对象更改为函数

c++ - 函数没有返回正确的结果

combobox - JavaFX 可编辑组合框 : Showing toString on item selection

javascript - 从 EXTJS ComboBox 的 JSON 存储中检索 url 参数