Win32 API提供了两种一般样式的列表框:单选(默认样式)和多选。在【单选列表框】中,用户一次只能选择一个项目。在【多选列表框】中,用户可以一次选择多个项目;应用程序必须为多选列表框指定LBS_MULTIPLESEL或LBS_EXTENDEDSEL样式。
Win32 API提供了许多其他列表框和窗口样式,用于控制列表框的外观和操作。这些样式表示列表框项目是否按照多个列进行排序,由应用程序绘制,等等。列表框的尺寸和样式通常在包含在应用程序资源中的对话框模板中定义。有关如何创建对话框模板并将其包含在应用程序中的信息,请参阅开发工具随附的文档。
要使用CreateWindow或CreateWindowEx函数创建列表框,请使用LISTBOX类,适当的窗口样式常量和以下样式常量来定义列表框。
列表框风格 | 描述 |
LBS_DISABLENOSCROLL | 当框不包含足够的项目滚动时,显示列表框中禁用的垂直滚动条。如果不指定此样式,则当列表框中不包含足够的项目时,滚动条将被隐藏。 |
LBS_EXTENDEDSEL | 允许使用SHIFT键和鼠标或特殊组合键选择多个项目。 |
LBS_HASSTRINGS | 指定列表框包含由字符串组成的项目。列表框维护字符串的内存和地址,以便应用程序可以使用LB_GETTEXT消息检索特定项目的文本。默认情况下,除了所有者绘制的列表框之外的所有列表框都有此样式。您可以创建具有或不具有此样式的所有者绘制的列表框。 |
LBS_MULTICOLUMN | 指定水平滚动的多列列表框。LB_SETCOLUMNWIDTH消息设置列的宽度。 |
LBS_MULTIPLESEL | 每次用户单击或双击列表框中的字符串时,可以打开或关闭字符串选择。用户可以选择任意数量的字符串。 |
LBS_NODATA | 已过时。 |
LBS_NOINTEGRALHEIGHT | 指定列表框的大小完全是应用程序在创建列表框时指定的大小。通常,Windows将列出一个列表框,使列表框不显示部分项目。 |
LBS_NOREDRAW | 指定更改时列表框的外观不会更新。您可以随时发送WM_SETREDRAW消息来更改此样式。 |
LBS_NOSEL | 指定列表框包含可以查看但未选择的项目。 |
LBS_NOTIFY | 当用户单击或双击列表框中的字符串时,通过输入消息通知父窗口。 |
LBS_OWNERDRAWFIXED | 指定列表框的所有者负责绘制其内容,并且列表框中的项目具有相同的高度。创建列表框时,所有者窗口将收到WM_MEASUREITEM消息,并且列表框的可视方面已更改时显示WM_DRAWITEM消息。 |
LBS_OWNERDRAWVARIABLE | 指定列表框的所有者负责绘制其内容,并且列表框中的项目的高度是可变的。当组合框创建时,所有者窗口接收组合框中每个项目的WM_MEASUREITEM消息,当组合框的视觉方面已更改时,WM_DRAWITEM消息。 |
LBS_SORT | 按字母顺序排列列表框中的字符串。 |
LBS_STANDARD | 按字母顺序排列列表框中的字符串。只要用户单击或双击字符串,父窗口就会收到输入消息。列表框在所有方面都有边框。 |
LBS_USETABSTOPS | 在绘制字符串时,启用列表框以识别和展开制表符。默认选项卡位置为32个对话框单位。对话框单元是水平或垂直距离。一个水平对话框单位等于当前对话框基本宽度单位的0.25。Windows将根据当前系统字体的高度和宽度来计算这些单位。GetDialogBaseUnits函数返回当前对话框的基本单位(以像素为单位)。 |
LBS_WANTKEYBOARDINPUT | 指定列表框的所有者在用户按下键并且列表框具有输入焦点时接收WM_VKEYTOITEM消息。这使得应用程序能够对键盘输入进行特殊处理。 |