组合框 (Windows 控件)

本部分包含有关与组合框一起使用的编程元素的信息。 组合框 是由 COMBOBOX 类定义的唯一类型的控件,它结合了列表框和编辑控件的大部分功能。

综述

主题 内容
关于组合框 的 本部分讨论不同类型的组合框。
组合框功能 本文档讨论组合框的功能。
使用组合框 本节中的代码示例演示如何执行与组合框关联的任务。

功能

主题 内容
DlgDirListComboBox 将组合框的内容替换为指定目录中的子目录和文件的名称。 可以通过指定一组文件属性来筛选名称列表。 名称列表可以包括映射的驱动器号。
DlgDirSelectComboBoxEx 使用 DlgDirListComboBox 函数从填充的组合框中检索当前所选内容。 所选内容解释为驱动器号、文件或目录名称。
GetComboBoxInfo 检索有关指定组合框的信息。

宏

主题 内容
ComboBox_AddItemData 将项数据添加到指定位置的组合框中的列表。 可以使用此宏或显式发送 CB_ADDSTRING 消息。
ComboBox_AddString 将字符串添加到组合框中的列表。 如果组合框没有 CBS_SORT 样式,则字符串将添加到列表末尾。 否则,字符串将插入到列表中,并对其进行排序。 可以使用此宏或显式发送 CB_ADDSTRING 消息。
ComboBox_DeleteString 删除组合框中列表中指定位置的项。 可以使用此宏或显式发送 CB_DELETESTRING 消息。
ComboBox_Dir 将名称添加到组合框显示的列表。 该宏将添加与指定字符串和文件属性集匹配的目录和文件的名称。 它还可以将映射的驱动器号添加到组合框中的列表。 可以使用此宏或显式发送 CB_DIR 消息。
ComboBox_Enable 启用或禁用组合框控件。
ComboBox_FindItemData 查找组合框列表中具有指定项数据的第一项。 可以使用此宏或显式发送 CB_FINDSTRING 消息。
ComboBox_FindString 查找以指定字符串开头的组合框列表中的第一个字符串。 可以使用此宏或显式发送 CB_FINDSTRING 消息。
ComboBox_FindStringExact 在组合框列表中查找与指定字符串完全匹配的第一个字符串,但搜索不区分大小写。 可以使用此宏或显式发送 CB_FINDSTRINGEXACT 消息。
ComboBox_GetCount 获取组合框的列表框中的项数。 可以使用此宏或显式发送 CB_GETCOUNT 消息。
ComboBox_GetCueBannerText 获取组合框的编辑控件中显示的提示横幅文本。 使用此宏或显式发送 CB_GETCUEBANNER 消息。
ComboBox_GetCurSel 获取组合框中当前选定项的索引。 可以使用此宏或显式发送 CB_GETCURSEL 消息。
ComboBox_GetDroppedControlRect 检索处于下拉状态的组合框的屏幕坐标。 可以使用此宏或显式发送 CB_GETDROPPEDCONTROLRECT 消息。
ComboBox_GetDroppedState 确定组合框控件中的下拉列表是否可见。 可以使用此宏或显式发送 CB_GETDROPPEDSTATE 消息。
ComboBox_GetExtendedUI 确定组合框是使用默认用户界面(UI)还是扩展 UI。 可以使用此宏或显式发送 CB_GETEXTENDEDUI 消息。
ComboBox_GetItemData 获取与组合框中指定列表项关联的应用程序定义值。 可以使用此宏或显式发送 CB_GETITEMDATA 消息。
ComboBox_GetItemHeight 检索组合框中列表项的高度。 可以使用此宏或显式发送 CB_GETITEMHEIGHT 消息。
ComboBox_GetLBText 从组合框中的列表获取字符串。 可以使用此宏或显式发送 CB_GETLBTEXT 消息。
ComboBox_GetLBTextLen 获取组合框中列表中字符串的长度。 可以使用此宏或显式发送 CB_GETLBTEXTLEN 消息。
ComboBox_GetMinVisible 获取组合框下拉列表中可见项的最小数目。
ComboBox_GetText 从组合框控件中检索文本。
ComboBox_GetTextLength 获取组合框文本中的字符数。
ComboBox_InsertItemData 在指定位置的组合框中插入列表中的项数据。 可以使用此宏或显式发送 CB_INSERTSTRING 消息。
ComboBox_InsertString 将字符串添加到指定位置的组合框中的列表。 可以使用此宏或显式发送 CB_INSERTSTRING 消息。
ComboBox_LimitText 限制用户可在组合框的编辑控件中键入的文本长度。 可以使用此宏或显式发送 CB_LIMITTEXT 消息。
ComboBox_ResetContent 从列表框中删除所有项并编辑组合框的控件。 可以使用此宏或显式发送 CB_RESETCONTENT 消息。
ComboBox_SelectItemData 在组合框中搜索具有指定项数据的项的列表。 如果找到匹配项,则选择该项。 可以使用此宏或显式发送 CB_SELECTSTRING 消息。
ComboBox_SelectString 在组合框中搜索以指定字符串中的字符开头的项的列表。 如果找到匹配项,则选择该项。 可以使用此宏或显式发送 CB_SELECTSTRING 消息。
ComboBox_SetCueBannerText 设置为组合框的编辑控件显示的提示横幅文本。
ComboBox_SetCurSel 设置组合框中当前选定的项。 可以使用此宏或显式发送 CB_SETCURSEL 消息。
ComboBox_SetExtendedUI 为具有 CBS_DROPDOWN 或 CBS_DROPDOWNLIST 样式的组合框选择默认用户界面(UI)或扩展 UI。 可以使用此宏或显式发送 CB_SETEXTENDEDUI 消息。
ComboBox_SetItemData 设置与组合框中指定列表项关联的应用程序定义值。 可以使用此宏或显式发送 CB_SETITEMDATA 消息。
ComboBox_SetItemHeight 设置组合框中的列表项或选择字段的高度。 可以使用此宏或显式发送 CB_SETITEMHEIGHT 消息。
ComboBox_SetMinVisible 设置组合框下拉列表中可见项的最小数量。
ComboBox_SetText 设置组合框的文本。
ComboBox_ShowDropdown 在组合框中显示或隐藏列表。 可以使用此宏或显式发送 CB_SHOWDROPDOWN 消息。

消息

主题 内容
CB_ADDSTRING 将字符串添加到组合框的列表框中。 如果组合框没有 CBS_SORT 样式,则字符串将添加到列表末尾。 否则,字符串将插入到列表中,并对列表进行排序。
CB_DELETESTRING 删除组合框的列表框中的字符串。
CB_DIR 将名称添加到组合框显示的列表。 该消息将添加与指定字符串和文件属性集匹配的目录和文件的名称。 CB_DIR 还可以将映射的驱动器号添加到列表中。
CB_FINDSTRING 在组合框的列表框中搜索以指定字符串中的字符开头的项。
CB_FINDSTRINGEXACT 查找与 lParam 参数中指定的字符串匹配的组合框中的第一个列表框字符串。
CB_GETCOMBOBOXINFO 获取有关指定组合框的信息。
CB_GETCOUNT 获取组合框的列表框中的项数。
CB_GETCUEBANNER 获取组合框的编辑控件中显示的提示横幅文本。 显式发送此消息或使用 ComboBox_GetCueBannerText 宏发送。
CB_GETCURSEL 应用程序在组合框的列表框中发送 CB_GETCURSEL 消息以检索当前选定项的索引(如果有)。
CB_GETDROPPEDCONTROLRECT 应用程序发送 CB_GETDROPPEDCONTROLRECT 消息,以检索处于下拉状态的组合框的屏幕坐标。
CB_GETDROPPEDSTATE 确定组合框的列表框是否已下拉。
CB_GETDROPPEDWIDTH 获取具有 CBS_DROPDOWN 或 CBS_DROPDOWNLIST 样式的组合框列表框的最小允许宽度(以像素为单位)。
CB_GETEDITSEL 获取组合框的编辑控件中当前所选内容的起始和结束字符位置。
CB_GETEXTENDEDUI 确定组合框具有默认用户界面还是扩展用户界面。
CB_GETHORIZONTALEXTENT 获取列表框可以水平滚动(可滚动宽度)的宽度(以像素为单位)。 仅当列表框具有水平滚动条时,这才适用。
CB_GETITEMDATA 应用程序将 CB_GETITEMDATA 消息发送到组合框,以检索与组合框中指定项关联的应用程序提供的值。
CB_GETITEMHEIGHT 确定组合框中的列表项或选择字段的高度。
CB_GETLBTEXT 从组合框列表中获取字符串。
CB_GETLBTEXTLEN 获取组合框中字符串的长度(以字符为单位)。
CB_GETLOCALE 获取组合框的当前区域设置。 区域设置用于确定使用 CB_ADDSTRING 消息添加 CBS_SORT 样式和文本的组合框显示文本的正确排序顺序。
CB_GETMINVISIBLE 获取组合框下拉列表中可见项的最小数目。
CB_GETTOPINDEX 应用程序发送 CB_GETTOPINDEX 消息,以检索组合框列表框部分第一个可见项的从零开始的索引。 最初,索引为 0 的项位于列表框的顶部,但如果列表框内容已滚动,则其他项可能位于顶部。
CB_INITSTORAGE 应用程序在将大量项目添加到组合框的列表框部分之前发送 CB_INITSTORAGE 消息。 此消息分配用于存储列表框项的内存。
CB_INSERTSTRING 将字符串或项数据插入组合框列表中。 与 CB_ADDSTRING 消息不同,CB_INSERTSTRING 消息不会导致对具有 CBS_SORT 样式的列表进行排序。
CB_LIMITTEXT 限制用户可在组合框的编辑控件中键入的文本长度。
CB_RESETCONTENT 从列表框中删除所有项并编辑组合框的控件。
CB_SELECTSTRING 在组合框列表中搜索以指定字符串中的字符开头的项。 如果找到匹配的项,则会将其选中并复制到编辑控件。
CB_SETCUEBANNER 设置为组合框的编辑控件显示的提示横幅文本。
CB_SETCURSEL 应用程序发送 CB_SETCURSEL 消息,以在组合框中选择字符串。 如有必要,列表会将字符串滚动到视图中。 组合框的编辑控件中的文本将更改以反映新选定内容,并删除列表中以前的任何选定内容。
CB_SETDROPPEDWIDTH 应用程序发送 CB_SETDROPPEDWIDTH 消息,以设置具有 CBS_DROPDOWN 或 CBS_DROPDOWNLIST 样式的组合框列表框的最大允许宽度(以像素为单位)。
CB_SETEDITSEL 应用程序发送 CB_SETEDITSEL 消息以在组合框的编辑控件中选择字符。
CB_SETEXTENDEDUI 应用程序发送 CB_SETEXTENDEDUI 消息,以选择具有 CBS_DROPDOWN 或 CBS_DROPDOWNLIST 样式的组合框的默认 UI 或扩展 UI。
CB_SETHORIZONTALEXTENT 应用程序发送 CB_SETHORIZONTALEXTENT 消息以设置宽度(以像素为单位),列表框可以水平滚动(可滚动宽度)。 如果列表框的宽度小于此值,则水平滚动条水平滚动列表框中的项目。 如果列表框的宽度等于或大于此值,则隐藏水平滚动条;如果组合框具有 CBS_DISABLENOSCROLL 样式,则禁用。
CB_SETITEMDATA 应用程序发送 CB_SETITEMDATA 消息来设置与组合框中的指定项关联的值。
CB_SETITEMHEIGHT 应用程序发送 CB_SETITEMHEIGHT 消息,以设置组合框中的列表项或选择字段的高度。
CB_SETLOCALE 应用程序发送 CB_SETLOCALE 消息来设置组合框的当前区域设置。 如果使用 CB_ADDSTRING添加组合框具有 CBS_SORT 样式和字符串,则组合框的区域设置会影响列表项的排序方式。
CB_SETMINVISIBLE 应用程序发送 CB_SETMINVISIBLE 消息,以在组合框的下拉列表中设置最小可见项数。
CB_SETTOPINDEX 应用程序发送 CB_SETTOPINDEX 消息,以确保特定项在组合框的列表框中可见。 系统滚动列表框内容,以便指定的项显示在列表框顶部或达到最大滚动范围。
CB_SHOWDROPDOWN 应用程序发送 CB_SHOWDROPDOWN 消息,以显示或隐藏具有 CBS_DROPDOWN 或 CBS_DROPDOWNLIST 样式的组合框的列表框。

通知

主题 内容
CBN_CLOSEUP 关闭组合框的列表框时,将发送 CBN_CLOSEUP 通知代码。 组合框的父窗口通过 WM_COMMAND 消息接收此通知代码。
CBN_DBLCLK 当用户双击组合框列表框中的字符串时,将发送 CBN_DBLCLK 通知代码。 组合框的父窗口通过 WM_COMMAND 消息接收此通知代码。
CBN_DROPDOWN 当组合框的列表框即将可见时,将发送 CBN_DROPDOWN 通知代码。 组合框的父窗口通过 WM_COMMAND 消息接收此通知代码。
CBN_EDITCHANGE 用户执行了可能已更改组合框的编辑控件部分中的文本的作后,将发送 CBN_EDITCHANGE 通知代码。 与 CBN_EDITUPDATE 通知代码不同,此通知代码在系统更新屏幕后发送。 组合框的父窗口通过 WM_COMMAND 消息接收此通知代码。
CBN_EDITUPDATE 当组合框的编辑控件部分即将显示更改的文本时,将发送 CBN_EDITUPDATE 通知代码。 此通知代码在控件格式化文本之后发送,但在显示文本之前。 组合框的父窗口通过 WM_COMMAND 消息接收此通知代码。
CBN_ERRSPACE 当组合框无法分配足够的内存以满足特定请求时,将发送 CBN_ERRSPACE 通知代码。 组合框的父窗口通过 WM_COMMAND 消息接收此通知代码。
CBN_KILLFOCUS 当组合框失去键盘焦点时,将发送 CBN_KILLFOCUS 通知代码。 组合框的父窗口通过 WM_COMMAND 消息接收此通知代码。
CBN_SELCHANGE 当用户更改组合框列表框中的当前选择时,将发送 CBN_SELCHANGE 通知代码。 用户可以通过单击列表框或使用箭头键来更改所选内容。 组合框的父窗口以 WM_COMMAND 消息的形式接收此通知,该消息采用 wParam 参数的高序单词CBN_SELCHANGE。
CBN_SELENDCANCEL 当用户选择项目时,会发送 CBN_SELENDCANCEL 通知代码,但随后选择另一个控件或关闭对话框。 它指示用户的初始选择将被忽略。 组合框的父窗口通过 WM_COMMAND 消息接收此通知代码。
CBN_SELENDOK 当用户选择列表项或选择项,然后关闭列表时,将发送 CBN_SELENDOK 通知代码。 它指示要处理用户的选择。 组合框的父窗口通过 WM_COMMAND 消息接收此通知代码。
CBN_SETFOCUS 当组合框接收键盘焦点时,将发送 CBN_SETFOCUS 通知代码。 组合框的父窗口通过 WM_COMMAND 消息接收此通知代码。
WM_COMPAREITEM 系统发送 WM_COMPAREITEM 消息,以确定新项在所有者绘制组合框或列表框的排序列表中相对位置。 每当应用程序添加新项时,系统将此消息发送到使用 CBS_SORT 或 LBS_SORT 样式创建的组合框或列表框的所有者。
WM_DRAWITEM 当按钮、组合框、列表框或菜单的可视方面发生更改时,WM_DRAWITEM 消息将发送到所有者绘制按钮、组合框、列表框或菜单的父窗口。
WM_MEASUREITEM 创建控件或菜单时,WM_MEASUREITEM 消息将发送到组合框、列表框、列表视图控件或菜单项的所有者窗口。

结构

主题 内容
COMBOBOXINFO 包含组合框状态信息。
COMPAREITEMSTRUCT 为排序、所有者绘制的列表框或组合框中的两个项目提供标识符和应用程序提供的数据。
DRAWITEMSTRUCT 提供所有者窗口所需的信息,以确定如何绘制所有者绘制的控件或菜单项。 所有者绘制控件或菜单项的所有者窗口接收指向此结构的指针,作为 WM_DRAWITEM 消息的 lParam 参数。
MEASUREITEMSTRUCT 通知系统所有者绘制的控件或菜单项的尺寸。 这样,系统就可以正确处理用户与控件的交互。

常数

主题 内容
组合框样式 若要使用 CreateWindow 或 CreateWindowEx 函数创建组合框,请指定 COMBOBOX 类、适当的窗口样式常量以及以下组合框样式的组合。