CB_SETHORIZONTALEXTENT在下拉组合框的底部给出一个空行

时间:2012-05-15 12:19:15

标签: c++ winapi

以下是此问题的屏幕截图。我用了

SendMessage(find, CB_SETHORIZONTALEXTENT, (WPARAM)200, 0);

为下拉组合框创建水平滚动。但它在底部给出了一个空行。请问如何解决这个问题。

enter image description here

1 个答案:

答案 0 :(得分:0)

我知道问这个问题已经有2年了,但是如果其他人遇到这个问题(就像我做的那样),我就是这样解决的:

最后的空间是由DropDownHeight属性的错误计算引起的,该属性的默认值取决于ItemHeight(取决于Font)和MaxDropDownItems

因此,如果您手动添加水平滚动条(就像我一样,通过添加WS_HSCROLL样式),您需要重新计算DropDownHeight,如下所示:

DropDownHeight = SystemInformation.HorizontalScrollBarHeight
                 + 2 + ItemHeight * MaxDropDownItems;

其中2用于边框。

修改

考虑系统的边界以获得更广泛的适用性......

DropDownHeight = ItemHeight * MaxDropDownItems 
                 + SystemInformation.HorizontalScrollBarHeight 
                 + 2 * SystemInformation.BorderSize.Height;