C++ CB_SETHORIZONTALEXTENT在下拉组合框底部提供一个空行
这是本期的截图。我曾经C++ CB_SETHORIZONTALEXTENT在下拉组合框底部提供一个空行,c++,winapi,C++,Winapi,这是本期的截图。我曾经 SendMessage(find,CB_SETHORIZONTALEXTENT,(WPARAM)200,0) 为下拉组合框创建水平滚动。但它在底部给出了一个空行。请告诉我如何解决这个问题 我知道这个问题已经问了2年了,但如果其他人(像我一样)碰到这个问题,我是如何解决的: 末尾的空格是由于对DropDownHeight属性计算错误造成的,该属性的默认值是根据ItemHeight(取决于Font)和MaxDropDownItems计算的 因此,如果手动添加水平滚动条(就像我
SendMessage(find,CB_SETHORIZONTALEXTENT,(WPARAM)200,0)代码>
为下拉组合框创建水平滚动。但它在底部给出了一个空行。请告诉我如何解决这个问题
我知道这个问题已经问了2年了,但如果其他人(像我一样)碰到这个问题,我是如何解决的:
末尾的空格是由于对DropDownHeight
属性计算错误造成的,该属性的默认值是根据ItemHeight
(取决于Font
)和MaxDropDownItems
计算的
因此,如果手动添加水平滚动条(就像我添加WS_HSCROLL样式那样),则需要重新计算下拉高度,如下所示:
DropDownHeight = SystemInformation.HorizontalScrollBarHeight
+ 2 + ItemHeight * MaxDropDownItems;
其中2
表示边界
编辑
考虑到更广泛适用性的系统边界
DropDownHeight = ItemHeight * MaxDropDownItems
+ SystemInformation.HorizontalScrollBarHeight
+ 2 * SystemInformation.BorderSize.Height;
您确定您的代码没有添加空字符串作为第一个字符串吗?你能突出显示空行吗?如果是,它是实际的项目,而不与SeStruZONTALLATE调用有关。那个家伙是C++的,我觉得这是.NET。是的,我有C代码,但是我用C++ API来实现这个功能,所以这是可能的。如果他在C++代码中,他只需要翻译代码。然后…这个问题有两年历史了。。所以我怀疑这对他来说很重要。。。我的回答是,无论谁在未来偶然发现这种问题,我的主要想法都是重要的,dropdownheight
需要重新计算,无论用哪种语言