基于MSDN的ListBoxD 处理消息
(1)、LB_FINDSTRING 消息(一般查找)
wParam 在第一个条目被查找到之前的条目索引(也就是开始查找的索引位置)。当搜索达到列表框的底部时,搜索将重新回到由该参数指定的位置从头查找。如果该参数为-1,将从列表框的起始索引(0)开始查找。
lParam 一个指向以NULL结尾的字符串,该字符串包含了将要搜索的内容。搜索是大小写敏感的。所以可以搜索任何大小写组合的字符串形式。
Return Value 如果成功,返回第一个匹配的条目的索引,如果失败,返回LB_ERR。
备注::如果你以自绘形式创建的列表框,该消息会返回一个匹配由lParam参数提供的值长整型的值。
(2)、LB_FINDSTRINGEXACT 消息(精确查找)
wParam 基于零的开始索引。当搜索达到列表框的底部时,将返回到开始索引处继续进行搜索。如果该参数为-1,将从列表框的开始处从头执行搜索。
lParam 指向被搜索字串的字符串指针。该字符串可以包含完整的文件名及扩展。搜索是不分大小写的。
Return Value 返回值是基于零的匹配条目的索引。当失败时,返回LB_ERR。
Remarks 该函数仅在指定字符串和列表框中的条目的长度相等且每个字符均相等的情况才算匹配。如果一个应用程序以自绘样式创建列表框,则由该消息执行的内容将取决于LBS_SORT是否被使用。
(3)、LB_GETANCHORINDEX 消息 //获得条目锚点的索引,锚点就是多选状态下选择的起始条目。
(4)、LB_GETCARETINDEX 消息 //返回在多选状态下,具有焦点的条目的索引。该条目既可以被选中,也可以是没被选中。
(5)、LB_GETCURSEL 消息 //获得当前被选条目的索引。仅在单选状态的列表框有效。
Return Value 在单选状态的列表框中,返回值是基于零的当前选中条目的索引,如果未发现选中的条目,返回值是LB_ERR。
Remarks 不要给多选状态的列表框发送该消息。为了获得处于多选状态的列表框的选中条目的索引,可以使用LB_GETSELITEMS消息。如果要获得多选状态下的列表框中哪一个条目具有焦点,可以使用LB_GETSEL消息。如果将该消息发送给一个具有多选状态的列表框,该消息返回具有焦点的条目索引。如果没有条目被选中,返回 0.
(6)、LB_GETHORIZONTALEXTENT 消息 //如果列表框具有一个水平滚动条,该消息获得水平滚动的宽度(单位像素)
Return Value 返回值是滚动宽度(单位是像素)
Remarks 为了响应该消息列表框必须已经定义了WS_HSCROLL样式。如果应用程序并未给列表框定义水平扩展(使用LB_SETHORIZONTALEXTENT),默认的水平扩展时0.注意:列表框并不会自动更新水平扩展。
(7)、LB_GETITEMDATA 消息 //获得与指定的列表框中条目相关的程序自定义值。
(8)、LB_GETITEMHEIGHT //应用程序发送该消息用以返回一个Listbox中条目的高度
wParam 指定基于0的listbox 中的条目。该索引仅在列表框使用 LBS_OWNERDRAWVARIABLE风格时使用。否则,该值必须为0.
(9)、LB_GETITEMRECT //获得列表框中条目的边界矩形尺寸
wParam 条目的索引值。
lParam 指向一个RECT结构的指针,该结构用于接收列表框中条目的客户坐标值
(10)、LB_GETLOCALE //获得当前列表框的区域。可以使用这个区域来决定显示文本正确的排序规则。
(11)、LB_GETSEL Message //获得一个条目的选择状态。如果一个条目被选中,返回Yu值大于0,否则,返回值是0.如果发生错误,返回LB_ERR.
(12)、LB_GETSELCOUNT Message //在具有多选状态的列表框中,该消息获得选中的条目的数量 。返回值是列表框中选中的条目的数量。如果列表框处于单选状态,返回值是LB_ERR。
(13)、LB_GETSELITEMS Message //在具有多选状态的列表框中,该消息通过填充一个缓冲来保存被选中的条目。
wParam 选中条目数量的最大值。
lParam 足够大的缓冲用于存储整型值。
Return Value 返回值是放置在缓冲中的条目的数量。如果列表框处于单选状态,返回值是LB_ERR.
(14)、LB_GETTEXT //从列表框中获得一个字符串。
wParam 所要返回的字符串。
lParam 接收字符串的缓冲器。它的类型是LPTSTR,之后将强化转换为LPARAM。缓冲器必须具有足够的空间开存储字符串(包括结尾的NULL)。一个LB_GETTEXTLEN消息可以在应用该消息之前用来获得字符串长度(单位是TCHARS)。
Return Value 返回值是字符串长度(TCHARS)。不包括结尾的NULL字符。如果wParam未指定一个有效的索引,返回值LB_ERR
Remarks 如果以自绘样式创建一个列表框,缓冲器指针将接受与条目(条目数据)相关的值。
(15)、LB_GETTEXTLEN //获得一个列表框中字符串的长度
wParam 字符串的索引。
lParam 未使用,必须为0
Return Value 返回值是字符串的长度,不包括结尾的NULL字符。在特定的情况下,该值事实上可能比文本的真实长度要大。如果wParam参数指向一个无效的索引,返回值是LB_ERR。
Remarks 在特定条件下,返回值将比真实的长度要大。这种情况发生在ANSI和Unicode混合时。
如果要获得精确的长度,可以使用WM_GETTEXT,LB_GETTEXT 或 CB_GETLBTEXT消息,或 GetWindowText 函数。
(16)、LB_GETTOPINDEX Message //获得第一个“可见”的条目的索引。初始化时,第一个可见的条目是索引为0的条目,但如果列表框的发生滚动之后,该索引值会发生变化。
返回值是第一个可见的条目的索引。
(17)、LB_INITSTORAGE Message //定位内存用于存储列表框中的条目。该消息在向列表框中加入大量条目时使用。
wParam 加入的条目数量。
lParam 内存的量用于存储条目字符串。(以字节)。
Return Value如果消息成功,返回值是所有的条目数量。如果消息失败,返回值是LB_ERRSPACE。
Remarks 该消息能够帮助加速条目数大于100的列表框初始化进程。它会预留一定量的内存空间,这样,接下来LB_ADDSTRING,LB_INSERTSTRING,LB_DIR 和 LB_ADDFILE消息会使用更少的时间。
(18)、LB_INSERTSTRING Message //向列表框中插入一个条目数据或字符串。不像LB_ADDSTRING 消息,该消息不会激活LBS_SORT样式来对条目进行排序。
wParam 插入字符串的位置。如果参数为-1,字符串将插入到列表框的尾部。
lParam 所要插入的字符串指针。如果以自绘的形式创建列表框,该参数的值会作为条目数据本身而不是字符串指针来存储。可以使用LB_GETITEMDATA 和LB_SETITEDATA 消息来接收或修改条目数据。
Return Value 返回值是插入处的索引。如果发生错误,返回值是LB_ERR。如果没有足够空间来存储新的字符串,返回值LB_ERRSPACE。
(19)、LB_ITEMFROMPOINT //一个应用程序发送这个消息用以返回基于0的位于ListBox内的离指定的点位置最近一个条目
返回值中低位存储的是最近条目,高位存储的值取决于给定点的位置,如果该点位于客户区内,则为0,否则为1
(20)、LB_SELITEMRANGE //在多选状态下的列表框中选择或取消选择一个或多个连续条目。
wParam TRUE 代表选择条目,FALSE为取消选择。
lParam 低位字指定第一个选择的条目索引。高位字指定最后一个选择的条目索引。
Return Value如果发生错误,返回LB_ERR。
Remarks仅在具有多选状态的列表框中使用该消息。该消息仅能用于前65536个条目。
(21)、LB_SELITEMRANGEEX //在多选状态下的列表框中选择一个或多个连续的条目。
wParam 指定选中条目中第一个条目的索引。
lParam 指定选中条目中最后一个条目的索引
(22)、LB_SETANCHORINDEX // 设置锚点条目——从该条目开始,一个多重选择开始。一个多重选择会跨越锚点条目和结尾条目间所有的条目
wParam 新锚点条目的索引。
lParam 该参数未使用。
Return Value 如果消息成功,返回值是0,如果消息失败,返回值是LB_ERR。
(23)、LB_SETCARETINDEX //在位于多选状态下的列表框中指定索引下设置焦点矩形。如果条目不可见,会自动滚动可见。
(24)、LB_SETCOLUMNWIDTH Message //对多列的列表框设置所有列的宽度(单位是像素)
wParam 所有列的宽度(像素)
lParam 未使用,可以为0
Return Value 无返回值
(25)、LB_SETCOUNT Message //设置由LBS_NODATA样式而不是LBS_HASSTRINGS样式创建的列表框的条目数量。
wParam 指定列表框中的条目数量。
lParam 未使用。
Return Value如果发生错误,返回值是LB_ERR。如果没有足够的内存空间,返回LB_ERRSPACE。
(26)、LB_SETCURSEL Message //选择一个字符串,并将其所在的条目滚动到视野内。当新的字符串被选定,列表框的高亮显示将从原有的选中字符串移动到这个新的字符串上。
wParam 指定字符串索引。如果该参数为-1,列表框不具有任何选中条目。
lParam 未使用,可以为0.
Return Value 如果发生错误,返回LB_ERR。如果wParam为-1,则无论什么情况均返回LB_ERR
Remarks 该消息仅适用于单选状体下的列表框。
(27)、LB_SETHORIZONTALEXTENT // 该消息用来设置列表框的宽度(单位是像素)。如果列表框的宽度小于设置的值,显示水平滚动条。如果列表框的宽度等于设置的值,则不显示滚动条。
LB_SETHORIZONTALEXTENT wParam = (WPARAM) cxExtent;
// 水平滚动宽度 lParam = 0;
// 未使用,必须为0
(28)、LB_SETITEMHEIGHT //应用程序通过发送该消息来设置ListBox中条目的高度(单位是像素)。
wParam = (WPARAM) index; // 条目索引lParam = MAKELPARAM(cyItem, 0);
lParam // 条目高度
(29)、LB_SETLOCALE
设置列表框的当前区域。可以使用区域来决定显示文本的正确排序规则。
wParam 指定区域标识。该表示用于列表框添加文本时排序之用。
lParam 该参数未被使用。
Return Value 返回值是之前的区域标识符。如果wParam参数指定一个未在系统中安装的区域,返回值是LB_ERR,且当前的列表框区域不会发生改变。
可以使用MAKELCID宏来构建一个区域标识符
(30)、LB_SETSEL //在多选状态下的列表框中选择一个字符串。
wParam 指定如何设置选择。如果该参数为TRUE ,字符串被选中且高亮,如果为FALSE,移除高亮且字符串不再处于被选中状态。
lParam 指定字符串的索引。如果该参数为-1,选择的添加或删除取决于wParam的值。
Return Value 如果有错误,返回LB_ERR。
Remarks仅在多选状态的列表框使用该消息才有效。
(31)、LB_SETTABSTOPS //设置列表框的移字键。
wParam 移字键编号。
lParam 编号数组的第一个编号。
(32)、LB_SETTOPINDEX //确保给定条目在列表框中式可见的
wParam 条目索引
lParam 未被使用。
Return Value 如果发生错误,则返回LB_ERR.
Remarks 系统会滚动列表框以使指定的条目出现在列表框的顶部或达到最大滚动范围
(33)、LB_SETITEMDATA Message // 设置与列表框中指定条目相关的值。
wParam 指定条目的索引。如果该值为-1,lParam值应用于所有的列表框中的条目
lParam 指定与条目相关的值。
Return Value 发生错误,返回LB_ERR.
Remarks 如果条目位于一个以自绘样式创建的列表框中,该消息将替换LB_ADDSTRING 或 LB_INSERTSTRING 消息中lParam参数的值。
//////////////////////////////////////////