列表框样式

若要使用 CreateWindowCreateWindowEx 函数创建列表框,请使用 LISTBOX 类、适当的窗口样式常量以及以下样式常量来定义列表框。 创建控件后,这些样式无法修改,除非另有说明。

常量 说明
LBS_COMBOBOX
表示列表框是组合框的一部分。 允许在两个控件之间进行协调,以便它们呈现统一的用户界面。 组合框本身必须设置此样式。 如果样式不是由组合框设置的,则列表框将被错误地视为组合框的子项,从而导致失败。
LBS_DISABLENOSCROLL
当列表框未包含足够的项而不需要滚动时,将显示一个禁用的水平或垂直滚动条。 如果未指定此样式,则当列表框未包含足够的项时,滚动条将隐藏。 此样式必须与 WS_VSCROLLWS_HSCROLL 样式一起使用
LBS_EXTENDEDSEL
允许使用 Shift 键和鼠标或特定组合键选择多个项。
LBS_HASSTRINGS
指定列表框包含由字符串组成的项。 列表框维护这些字符串的内存和地址,以便应用程序可以使用 LB_GETTEXT 消息检索特定项的文本。 默认情况下,除所有者绘制的列表框之外的所有列表框都具有此样式。 可以创建具有或不具有此样式的所有者绘制的列表框。
对于不具有此样式的所有者绘制的列表框,LB_GETTEXT 消息将检索与项(项数据)关联的值
LBS_MULTICOLUMN
指定水平滚动的多列列表框。 列表框自动计算列的宽度,或者应用程序可以使用 LB_SETCOLUMNWIDTH 消息设置宽度。 如果列表框具有 LBS_OWNERDRAWFIXED 样式,则当列表框发送 WM_MEASUREITEM 消息时,应用程序可以设置宽度
具有 LBS_MULTICOLUMN 样式的列表框不能垂直滚动,它会忽略接收的任何 WM_VSCROLL 消息
LBS_MULTICOLUMN 和 LBS_OWNERDRAWVARIABLE 样式无法组合。 如果同时指定这两种样式,将忽略 LBS_OWNERDRAWVARIABLE
LBS_MULTIPLESEL
每次用户单击或双击列表框中的字符串时,将打开或关闭字符串选择。 用户可以选择任意数量的字符串。
LBS_NODATA
指定无数据列表框。 当列表框中的项数超出一千时,请指定此样式。 无数据列表框还必须具有 LBS_OWNERDRAWFIXED 样式,但不得具有 LBS_SORT 或 LBS_HASSTRINGS 样式
无数据列表框类似于所有者描述的列表框,但它不包含项的字符串或位图数据。 用于添加、插入或删除项的命令始终忽略任何指定的项数据;在列表框中查找字符串的请求始终失败。 必须绘制某个项时,系统会向所有者窗口发送 WM_DRAWITEM 消息。 随 WM_DRAWITEM 消息传递的 DRAWITEMSTRUCT 结构的 itemID 成员将指定要绘制的项的行号。 无数据列表框不发送 WM_DELETEITEM 消息
LBS_NOINTEGRALHEIGHT
指定列表框的大小正是应用程序创建此列表框时指定的大小。 通常,系统会调整列表框的大小,使列表框不显示部分项。
对于具有 LBS_OWNERDRAWVARIABLE 样式的列表框,始终强制使用 LBS_NOINTEGRALHEIGHT 样式
LBS_NOREDRAW
指定在进行更改后不更新列表框的外观。
若要更改控件的重绘状态,请使用 WM_SETREDRAW 消息
LBS_NOSEL
指定列表框包含可查看但不无法选择的项。
LBS_NOTIFY
只要用户单击列表框项 (LBN_SELCHANGE)、双击项 (LBN_DBLCLK) 或取消选择 (LBN_SELCANCEL),列表框就会向父窗口发送通知代码。
LBS_OWNERDRAWFIXED
指定列表框的所有者负责绘制其内容,并且列表框中的项的高度相同。 创建列表框时,所有者窗口会收到 WM_MEASUREITEM 消息,列表框的外观方面发生变化时,所有者窗口会收到 WM_DRAWITEM 消息
LBS_OWNERDRAWVARIABLE
指定列表框的所有者负责绘制其内容,并且列表框中的项的高度不同。 创建列表框时,所有者窗口会收到针对列表框中每一项的 WM_MEASUREITEM 消息,列表框的外观方面发生变化时,所有者窗口会收到 WM_DRAWITEM 消息
此样式会导致启用 LBS_NOINTEGRALHEIGHT 样式
如果指定了 LBS_MULTICOLUMN 样式,则忽略此样式
LBS_SORT
按字母顺序对列表框中的字符串进行排序。
LBS_STANDARD
按字母顺序对列表框中的字符串进行排序。 只要用户单击列表框项、双击项或取消选择,父窗口就会收到通知代码。 列表框具有垂直滚动条,并且所有边都有边框。 此样式组合了 LBS_NOTIFY、LBS_SORT、WS_VSCROLLWS_BORDER 样式
LBS_USETABSTOPS
允许列表框在绘制其字符串时识别并展开制表符。 可以使用 LB_SETTABSTOPS 消息指定制表位位置。 默认制表位位置之间距离 32 个对话框模板单元。 对话框模板单元是对话框模板中使用的与设备无关的单位。 若要将度量值从对话框模板单元转换为屏幕单位(像素),请使用 MapDialogRect 函数
LBS_WANTKEYBOARDINPUT
指定只要用户按键并且列表框具有输入焦点,列表框的所有者就会接收 WM_VKEYTOITEM 消息。 这使应用程序能够对键盘输入执行特殊处理。

要求

要求
标头
Winuser.h