1. 列表框控件简单介绍:
1) 也是传统控件的一种;
2) 其显示了包含叫做项的文本字符串列表,注意和下拉列表框(Combo Box)相区别,列表框中的项是永远显示出来的,而下拉列表框必须要点击下拉按钮,项才会显示出来,即列表框就是下拉列表框一直下拉出来的效果;
3) 列表框可以选择性地(并不是强制性地将其中的项目分类),还具有滚动功能,使列表框中可以显示的项目数量不受列表框物理尺寸的限制;
4) 只允许一次选择一个项,被选中的项用系统颜色COLOR_HIGHLIGHT加亮显示,鼠标移动到项上并不会加亮项,只有选中后才会高亮;
5) 可以利用自制列表框的样式使列表框显示图形而不是字符串;
2. 创建列表框:
1) 还是使用Create创建,但是列表框不再有标题了(字符串直接以项的形式出现),因此第一个参数lpszCaption就没有了,其他和CButton的Create的参数相同;
2) 函数原型:BOOL CListBox::Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
3) 示例:m_wndListBox.Create(WS_CHILD | WS_VISIBLE | LBS_STANDARD, rect, this, IDC_LISTBOX);
4) dwStyle:WS都是正常的普通窗口的风格,以LBS打头的都是列表框独有的风格,即List Box Style的缩写,这里列举一些最常用的
LBS_STANDARD:是WS_BORDER、WS_VSCROLL、LBS_NOTIFY和LBS_SORT的组合,其中WS_BORDER指定了列表框具有可见的边框,WS_VSCROLL使其具有垂直滚条,LBS_NOTIFY使其产生的通知可以发给父窗口,LBS_SORT使其可以按字母顺序对项进行排序;
!!滚条并不是在任何时候都能出现,只有在尺寸小于显示全部数量时才会出现,如果想在任何时候都显示滚条,则必须OR一个LBS_DISABLENOSCROLL;
LBS_NOSEL:只能查看不能选择
LBS_MULTIPLESEL:可多选
3. 列表框的键盘接口:
1) CListBox本身就具有键盘接口,可以使用上下、Page Up、Page Down等移动当前选项(当然高亮也会跟着移动);
2) 字母快捷键:即按下一个字母键就会选中下一个以该字符开头的选项;
3) 如果是多选列表框,则使用上下等方向键只能移动焦点矩形的位置而不能决定选中项的移动,只有按下空格键的时候才代表当前具有焦点的项被选中;
4. 在项中使用制表符:
1) 同样,列表框中的项也是按照比例调间距的,所以无法使用空格来调整项中字符串的间距;
2) 一种标准而美观的做法是利用制表符来调节项中字符串之间的间距;
3) 要想在项中使用制表符,必须在Create的时候OR上一个LBS_USETABST