组合框
组合框 组合框兼具编辑框和列表框的功能,既能编辑选项,又能显示多个项。在Windows程序设计中可以见到大量组合框的应用实例,例如文件对话框里的目录搜索组合框。 1.基础知识 组合框的风格主要有三种,分别是简单组合框( Simple ComboBox)、下拉式组合框(DropDown ComboBox)和下拉式列表框( DropDown ListBox)。 下拉式列表框和下拉式组合框平时只显示编辑区域,只在打开时才显示组合框的各项,这样有利于节省屏幕空间。这三种组合框的基本功能如表所示。 组合框类型 是否有下拉式列表 是否有编辑区域 简单组合框 无 有 下拉式组合框 有 有 下拉式列表框 有 无 组合框的风格取值定义了组合框的具体属性,包括是否自动排序,是否有滚动条。这些风格取值如表所示。 风格取值 描述 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_GETTEXT消息,这样就把文本复制到指定的字符串中,当需要设置编辑区域的文本时,只需要发送CB_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 设置输入焦点