组合框
组合框是计算机图形用户界面中由选单或下拉式选单与单行可编辑文本框组成的复合控件。允许用户或者直接键盘打字输入一个值或者从一个列表中选择一个值。有时也被称作“下拉式列表”(drop-down list)。[1]对于Java与.NET, 组合框与下拉式列表是两回事。[2][3] 下拉式列表不可以直接编辑。

一个常见的组合框
分类
创建时通过dwStyle参数可指定是哪类组合框:
- 简易(Simple)组合框:一直显示列表框
- 下拉式(Dropdown)组合框:默认不显示列表框,只有在点击了文本框右侧的下拉箭头才会弹出列表框
- 下拉列表式(Dropdown List)组合框:文本框是不能编辑的;用户在下拉列表框中选择了某项后,在文本框中复显其选择的条目
控件通知消息与消息反射
组合框可发出如下的控件通知消息(notify message)给它的父窗口:
- CBN_CLOSEUP:列表框被关闭,简易组合框不会发送该通知消息
- CBN_DBLCLK:用户在某列表项上双击鼠标,只有简易组合框才会发送该通知消息
- CBN_DROPDOWN:列表框组件的下拉动作,简易式组合框不会发送该通知消息
- CBN_EDITUPDATE:文本框准备显示改变了的正文时发送该消息,下拉列表式组合框不会发送该消息
- CBN_EDITCHANGE:文本框的内容被用户改变了。与CBN_EDITUPDATE不同,文本框显示的正文被刷新后才发出该消息。下拉列表式组合框不会发送该消息
- CBN_ERRSPACE:组合框无法申请足够的内存来容纳列表项
- CBN_SELENDCANCEL:用户要取消选择
- CBN_SELENDOK:用户选择了一项,然后按了回车键或单击了下滚箭头,表明用户确认了自己所作的选择
- CBN_KILLFOCUS:失去了输入焦点
- CBN_SELCHANGE:用户通过单击或移动箭头键改变了列表的选择
- CBN_SETFOCUS:获得了输入焦点
如果在组合框控件子类化(subclassing)的类中处理从父窗口反射回来的控件通知消息,需要注意:
- 文本框的父窗口是组合框
- 列表框的父窗口同时是组合框的父窗口。判断一个列表框是不是组合框的配套控件,需要判断:
- 二者的左边界对齐;
- 组合框的下边界等于列表框的上边界
参考文献
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.