MEASUREITEMSTRUCT:真的需要宽度吗?

时间:2014-04-22 14:44:24

标签: winapi combobox

我目前在Windows上使用组合框(CComboBox),我实现了一个下拉组合框,其中包含一些项目。

要获取单个项目的维度,API会提供(待覆盖)方法CComboBox::MeasureItem

MSDN表示上述例程必须设置组合框项目,列表项或菜单项的高度。但是,对于宽度,它只表示必须为菜单项设置(另外两个 - 列表和组合框项目 - 未提及)。因此,我尝试省略itemWidth并且它仍然有效(这对我来说很有意义,因为列表或组合框项目(几乎?)总是全宽)。

所以我的问题是:我是否打算通过itemWidth的实现填写字段CComboBox::MeasureItem,还是真的要分配宽度和高度?

1 个答案:

答案 0 :(得分:3)

ComboBox列表的宽度由CB_SETDROPPEDWIDTH消息控制:

  

应用程序发送CB_SETDROPPEDWIDTH消息以设置具有CBS_DROPDOWN或CBS_DROPDOWNLIST样式的组合框的列表框的最小允许宽度(以像素为单位)。

     

...

     

默认情况下,下拉列表框的最小允许宽度为零。 列表框的宽度是最小允许宽度或组合框宽度,以较大者为准。

这就是您不需要在WM_MEASUREITEM消息处理程序中提供宽度的原因。