我有一个非常大量的字符串要加载到MFC组合框。要设置我的组合框的宽度,我将为每个字符串使用GetTextExtent并在我的组合框上设置最大范围。这是非常耗时的,因为调用GetTextExtent需要花费大量时间。在添加25000个字符串时,这变得非常昂贵。有没有其他方法可以获得我可以在我的组合框上设置的确切宽度?
答案 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 - 但是只有将所有这些字符串添加到组合框中才会太慢。