4

背景:在某个对话框中,连续有几个控件。我希望它们都具有相同的表观高度。但是,对于具有 CBS_DROPDOWNLIST 样式且没有 CBS_OWNERDRAW* 的组合框,我无法更改表观高度。

问题:如何更改此类 DROPDOWNLIST 组合框的外观高度?

我知道组合框不允许使用 SetWindowPos 更改高度。然而,我的印象是发送带有 wParam= -1 的 CB_SETITEMHEIGHT 消息应该修改高度。此方法适用于具有 CBS_OWNERDRAWFIXED 样式集的组合框(我想避免设置此样式以保留“按钮式”外观)。

环境:我的 Win32 应用程序使用 Common-Controls 6.0,我担心启用视觉样式的环境(Windows 7、Aero)中的外观。

4

1 回答 1

3

我不认为这是可能的。

正如您所提到的,既不SetWindowPosMoveWindow您期望的那样工作,也不像您期望的那样工作。那是因为ComboBox 的高度包括下拉的高度。该控件会根据其使用的字体大小自动调整自身大小。因此,要更改大小,请通过向控件发送WM_SETFONT消息来更改控件字体的大小。

但我不明白为什么这是一个问题。您说您希望一系列控件具有相同的高度,但除非您更改其他控件的高度,否则它们应该已经匹配。由于对话框上的所有控件通常使用相同的字体,组合框和文本框都应该已经具有相同的高度。当您使用通用控件的 v6 并启用视觉样式时,它们将应用于所有这些控件并且它们应该具有统一的外观。您不必手动弄乱高度。

于 2013-05-30T09:30:01.173 回答