组合框

                                                 组合框
  组合框兼具编辑框和列表框的功能,既能编辑选项,又能显示多个项。在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    设置输入焦点
原文地址:https://www.cnblogs.com/IMyLife/p/4826061.html