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

时间:2016-03-14 12:09:54

标签: c++ combobox mfc

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

2 个答案:

答案 0 :(得分:2)

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

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

字符W似乎是最宽泛的字符。 (或使用循环查找最宽的字符)您可以检查最大字符串的长度,并为所有字符填充W填充的相同长度的字符串。现在这个字符串的宽度给出了组合框的最坏情况要求,如果它适合你。

方法2:保存一些电话

找出最宽和最小角色的比例。现在找到最大字符串的长度。现在进行第二次迭代,找到只有字符串长度的字符串宽度大于largest_length * ratio。这将节省一些电话。

答案 1 :(得分:1)

当即将显示太长的字符串时,您可以动态更新ComboBox的宽度。如果您有25000个职位要显示,那么迟早您将获得两倍的职位。另一个提示是使用Virtual ListCtrl - 但是只有将所有这些字符串添加到组合框中才会太慢。