我使用VS2010创建了一个非常简单的基于对话框的MFC应用程序,试图找到我们遇到的问题的解决方案。我从工具箱中删除了一个组合框到对话框,并修改了OnInitDialog
方法,为它添加了一大堆项目。
我想限制 open 组合框的垂直尺寸。似乎使用设计器执行此操作的方法是单击组合框控件的下拉箭头,该控件可切换可用于调整控件大小的手柄类型,并允许设置高度。这个高度会影响封闭组合框的大小,但应该控制打开的组合框的大小。
但是,情况并非如此。如何限制打开的下拉列表的垂直尺寸?答案 0 :(得分:1)
用于在当前组合框控件的下拉列表中设置最小数量的可见项。
通过在下拉列表中指定可见项目的数量,您可以根据需要控制下拉列表的高度。
答案 1 :(得分:1)
如果您将No Integral Height
属性设置为True
或创建具有Setting the Size of the Combo Box and Its Drop-Down List样式的组合框,则CBS_NOINTEGRALHEIGHT
中列出的步骤只会产生预期的效果。不幸的是,这通常导致部分显示的项目,因为高度以显示单位指定。
要获得组合框下拉部分的所需高度而不部分剪切项目,您必须通过调用CComboBox::SetMinVisibleItems
或发送CB_SETMINVISIBLE
message在运行时设置它。这两个都是相同的,前者使用MFC提供的成员函数,后者可用,无论您是否使用MFC。要设置可见项的数量,应用程序必须在清单中指定comctl32.dll版本6。为此,请将以下内容添加到应用程序清单中:
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
...
</dependency>
如果您使用的是Microsoft Visual C ++ 2005或更高版本,则可以将以下编译器指令添加到源代码中,而不是手动创建清单:
#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")