你的位置:pcMing工作室 >> 资讯 >> 编程开发 >> C++编程 >> 详细内容 在线投稿

VC++的列表框与组合框

排行榜 收藏 打印 发给朋友 举报 来源: 互联网   发布者:未知
热度235票  浏览415次 【共0条评论】【我要评论 时间:2010年3月20日 21:43
列表框是窗口类名为"ListBox"的预定义子窗口,在窗口矩形内包含有一些可以滚动显示的栏状字符串列表。标准的列表框只能允许选中一个条目,选中的条目将以系统颜色COLOR_HIGHLIGHT高亮显示。Windows还提供了多种不同风格的标准列表框,其中包括多选列表框、多列显示的列表框和可以显示图象的拥有者画(Owner-draw)列表框等。另一种与列表框相关的控件是组合框,该控件预定义类名为"COMBOBOX",实际是一个编辑控件同一个彼此相关的列表框控件的组合。用户既可以在组合框的编辑栏上直接输入、编辑文字也可以从下拉列表中显示的可能选择中进行选取。
d7i#f'~$E$s&`0
8?] l,C*l#\-p*r"r0  MFC的CListBox 类封装了列表框控件,由成员函数Create()完成对列表框的创建,在创建的同时指定了控件的窗口风格。当列表框中的条目被选中或被鼠标双击后将向父窗口发送WM_COMMAND消息。如果列表框采用了LBS_NOTIFY风格,父窗口就可以通过ON_LBN消息映射宏直接将通知消息同消息处理函数建立起映射关系。列表框提供了十余种窗口风格,现将列表框风格及说明列表如下:pcMing工作室*s9v+Vo&u L

%Svu'S'_J!|0
列表框风格说明
LBS_STANDARD创建一个具有边界和垂直滚动条、当选择发生变化或条目被双击时能够通知父窗口的标准列表框。所有条目按字母排序。
LBS_SORT按字母排序。
LBS_NOSEL条目可视但不可选。
LBS_NOTIFY当用户选择或双击一个串时,发出消息通知父窗口。
LBS_DISABLENOSCROLL在条目不多时依然显示并不起作用的滚动条。
LBS_MULTIPLESEL允许条目多选。
LBS_EXTENDEDSEL可用SHIFT和鼠标或指定键组合来选择多个条目。
LBS_MULTICOLUMN允许多列显示。
LBS_OWNERDRAWVARIABLE创建一个拥有者画列表框,条目高度可以不同。
LBS_OWNERDRAWFIXED创建一个具有相同条目高度的拥有者画列表框。
LBS_USETABSTOPS允许使用TAB制表符。
LBS_NOREDRAW当条目被增删后不自动更新列表显示。
LBS_HASSTRINGS记忆了添加到列表中的字串。
LBS_WANTKEYBOARDINPUT当有键按下时向父窗口发送WM_VKEYTOITEM或WM_CHARTOITEM消息。
LBS_NOINTEGRALHEIGHT按程序设定尺寸创建列表框。
pcMing工作室#O^PC;Do8cW A
  缺省的,列表框在每添加或删除一个条目后都会自动重绘,如果在列表框中已经有了几百条甚至上千条条目,将会因为重绘而引起比较严重的闪烁。可以通过使用LBS_NOREDRAW风格来禁止列表框的自动重绘。在需要更新显示时强制重绘列表框窗口即可。如果在创建时未使用LBS_NOREDRAW风格,可以在增删条目前向列表框发送WM_SETREDRAW消息,指定其不重绘,增添完毕后再次发送WM_SETREDRAW消息重新启用自动重绘风格。示例过程如下:
O| o*o1R:S%~$V0pcMing工作室.CT(m/UwiDnM
CListBox m_ctrListBox;pcMing工作室u/^{n@l c*mIg
// 禁止自动重绘
]W6D#k3a0m_ctrListBox.SendMessage(WM_SETREDRAW, FALSE, 0);pcMing工作室'I @tL6I.P9tl
// 进行条目增删操作
0j&L [6P|O0……
%_;pW1V9w0// 允许自动重绘pcMing工作室s z@5m9D
m_ctrListBox.SendMessage(WM_SETREDRAW, TRUE, 0);
pcMing工作室8]$hkMc6ce%L._?
  列表框创建之初是不含任何条目的,通过CListBox成员函数AddString()和InsertString()向列表框增添或插入条目。如果列表框具有LBS_SORT风格,那么新添加字串的位置是不固定的,要根据字串的字母进行排序;如果不具有该风格,新字串将添加到列表框的末尾。pcMing工作室:` ].R2O L

顶:13 踩:14
对本文中的事件或人物打分:
当前平均分:-0.28 (78次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.58 (69次打分)
【已经有61人表态】
6票
感动
8票
路过
8票
高兴
7票
难过
5票
搞笑
6票
愤怒
9票
无聊
12票
同情
上一篇 下一篇
发表评论
换一张

网友评论仅供网友表达个人看法,并不表明本网同意其观点或证实其描述。

查看全部回复【已有0位网友发表了看法】

网络资源