我目前在Windows上使用组合框(CComboBox
),我实现了一个下拉组合框,其中包含一些项目。
要获取单个项目的维度,API会提供(待覆盖)方法CComboBox::MeasureItem
。
MSDN表示上述例程必须设置组合框项目,列表项或菜单项的高度。但是,对于宽度,它只表示必须为菜单项设置(另外两个 - 列表和组合框项目 - 未提及)。因此,我尝试省略itemWidth
并且它仍然有效(这对我来说很有意义,因为列表或组合框项目(几乎?)总是全宽)。
所以我的问题是:我是否打算通过itemWidth
的实现填写字段CComboBox::MeasureItem
,还是真的要分配宽度和高度?
答案 0 :(得分:3)
ComboBox列表的宽度由CB_SETDROPPEDWIDTH
消息控制:
应用程序发送CB_SETDROPPEDWIDTH消息以设置具有CBS_DROPDOWN或CBS_DROPDOWNLIST样式的组合框的列表框的最小允许宽度(以像素为单位)。
...
默认情况下,下拉列表框的最小允许宽度为零。 列表框的宽度是最小允许宽度或组合框宽度,以较大者为准。
这就是您不需要在WM_MEASUREITEM
消息处理程序中提供宽度的原因。