我有大量的字符串要加载到 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/