组合框
组合框是一种常见的计算机图形用户界面组件,它结合了菜单或下拉式菜单以及单行可编辑文本框的特点。这种控件允许用户既可以手动输入值,也可以从提供的列表中选择值。在某些编程环境中,如Java和.NET,组合框与下拉式列表是有区别的,后者不可直接编辑。
风格取值描述
组合框的风格决定了其具体的行为特征,其中包括是否自动排序、是否存在滚动条等特性。具体的风格取值如下:
CBS_AUTOHSCROLL:当用户在编辑区域内输入字符时,列表框会自动滚动,以确保当前项目的名称与输入的字符保持相同的顺序。
CBS_DROPDOWN:创建一个下拉式的组合框。
CBS_DROPDOWNLIST:创建一个下拉式的列表框。
CBS_HASSTRINGS:允许应用程序通过GetText方法获取组合框内的文本。
CBS_OEMCONVERT:将输入的文本从ANSI编码转换为OEM编码,然后再转换回ANSI编码,以确保AnsiToOem函数的正确调用。
CBS_OWNERDRAWFIXED:父窗口负责绘制组合框内的项目,并确保所有项目的高度一致。
CBS_OWNERDRAWVARIABLE:父窗口负责绘制组合框内的项目,但不同项目的高度可以不同。
CBS_SIMPLE:组合框显示所有项目,当前选定的项目将在编辑区域中显示。
CBS_SORT:自动排序。
CBS_DISABLENOSCROLL:组合框具有垂直滚动条,即使项目数量不足也会启用滚动条;若未设置此样式,则滚动条默认隐藏。
CBS_NOINTEGRALHEIGHT:指示组合框的大小由程序精确控制,而通常情况下,组合框的大小取决于其中项目的数量。
创建组合框时,可以通过将CreateWindow的第一个参数设置为ComboBox并选择相应的风格取值。组合框创建后,需要对其进行初始化,可通过发送CB_ADDSTRING消息添加初始项目,这一过程类似于列表框的操作。如果未设置CBS_SORT风格,则新添加的项目将被追加至组合框的末尾。
应用程序的父窗口主要通过WM_COMMAND消息与组合框进行通信。应用程序可以使用CB_FINDSTRINGEXACT查找特定的项目,也可以通过发送CB_DELETESTRING删除指定的项目。若需要清空所有项目,可以发送CB_RESETCONTENT消息。
组合框的编辑区域用于显示当前选定的项目或编辑不在组合框中的项目。可以通过CB_LIMITTEXT限制输入文本的最大长度。要获取编辑区域的文本,可以发送CB_GETLBTEXT或WM_GETTEXT消息,从而将文本复制到指定的字符串中。若需要设置编辑区域的文本,可以发送WM_SETTEXT消息。
Windows API为组合框提供了文件显示和搜索功能,这些功能主要通过DlgDirListComboBox和DlgDirSelectComboBox函数实现。
应用程序接口
在应用程序开发过程中,开发者可以利用以下函数与组合框进行交互:
CB_ADDSTRlNG:添加一个新的项目。
CB_DELETESTRING:删除指定的项目。
CB_DIR:发送搜索目录的消息。
CB_FINDSTRING:搜索指定的项目。
CB_FINDSTRINGEXACT:精确地搜索指定的项目。
CB_GETCOUNT:获取组合框内项目的总数。
CB_GETCURSEL:获取当前选定项目的索引。
CB_GETEDITSEL:获取编辑区域中已选文本的范围。
CB_GETLBTEXT:获取编辑区域的文本内容。
CB_GETLBTEXTLEN:获取编辑区域文本的长度。
CB_LIMITTEXT:发送限制编辑区域文本长度的消息。
CB_RESETCONTENT:清除所有项目。
CB_SELECTSTRING:选择指定的字符串。
CB_SETCURSEL:将光标定位到指定位置。
CB_SETDROPPEDWIDTH:设置下拉列表的宽度。
CB_SETEDITSEL:设置编辑区域中已选文本的范围。
CBN_CLOSEUP:关闭组合框。
CBN_DBLCLK:发送用户双击组合框中项目的事件通知。
CBN_DROPDOWN:下拉时发送事件通知。
CBN_EDITCHANGE:发送编辑区域更改的通知。
CBN_EDITUPDATE:发送编辑区域更改的通知,在实际更新前发送。
CBN_ERRSPACE:发送内存不足的通知。
CBN_KILLFOCUS:当组合框失去输入焦点时发送通知。
CBN_SETFOCUS:设置输入焦点。
参考资料
组合框(Windows 控件).Microsoft.2024-08-24