Windows SDK下ListBox控件的使用

我会带着你远行 2023-06-01 12:36 116阅读 0赞

默认状态下,列表框窗口消息处理程序只显示列表条目,它的周围没有任何边界。

你可以使用窗口风格标识号WS_BORDER 来加上边框。

另外,你可以使用窗口风格WS_VSCROLL 来增加垂直滚动条,以便用鼠标来滚动列表框条目,也可以使用WS_HSCROLL 来增加水平滚动条,可以用来显示超出列表框宽度的条目。

缺省的列表框风格不会在用户选中某个列表项时产生通知消息,这样一来,程序必须向列表框发送消息以便了解其中条目的选择状态。所以,列表框控件通常都包括列表框风格LBS_NOTIFY,它可以使列表框控件在用户进行操作时,将一些状态信息及时反馈给应用程序。

另外,如果希望列表框控件对列表框中的条目进行排序,那么可以使用另一种常用的风格LBS_SORT。

一般情况下,创建列表框控件最常用的风格组合如下:

(LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)

ListBox消息














































LB_ADDSTRING 新的字符串追加为列表框的最后一项
LB_INSERTSTRING 字符串追加到列表框中的指定位置
LB_DELETESTRING 从列表框中删除指定的条目
LB_RESETCONTENT 清空列表框中的所有内容
LB_GETCOUNT 获得列表框中的条目个数
LB_GETTEXTLEN 确定列表框中指定条目的字符串长度
LB_SETTEXT 设置列表框条目的字符串
LB_GETTEXT 条目复制到文字缓冲区
LB_SETCURSEL 设置当前选定的索引项
LB_GETCURSEL 获得当前选定的索引项
LB_FINDSTRING 希望查找的字符串指针

如果你采用LBS_SORT 风格,或者仅仅希望将新的字符串追加为列表框的最后一项,那么填入列表框最简单的方法是借助LB_ADDSTRING消息:
SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM)string)

我们也可以使用LB_INSERTSTRING指定一个索引值,将字符串插入到列表框中的指定位置:
SendMessage(hwndList, LB_INSERTSTRING,index,(LPARAM)string)

我们可以使用LB_GETCURSEL获得当前选定的索引项:
index = SendMessage(hwndList, LB_GETCURSEL, 0, 0)

具有LBS_NOTIFY 风格的列表框可能产生的通知消息及其含义如下所示。

【这些消息可以在WindowProcedure函数中switch(message)中通过WM_COMMAND消息的case语句进行拦截,设置相应的响应函数】


ListBox可以产生的通知消息






































LBN_ERRSPACE 内存分配失败
LBN_SELCHANGE 单项选择列表框的当前选择项发生变化
LBN_CLICKED 用户在列表框的某条目上单击了鼠标左键
LBN_DBLCLK 用户在列表框某条目上双击了鼠标左键
LBN_SELCANCEL 用户取消了某个条目的选择
LBN_SETFOCUS 列表框获得了输入焦点
LBN_KILLFOCUS 列表框失去了输入焦点
LBN_CLICKCHECKMARK 用户单击了条目的检查框
LBN_ENTER 用户在列表框中按下ENTER键

发表评论

表情:
评论列表 (有 0 条评论,116人围观)

还没有评论,来说两句吧...

相关阅读

    相关 QtSDK使用指南详解

    Qt控件SDK使用指南详解 Qt作为一款跨平台的应用程序开发框架,在图形化用户界面的实现方面有着广泛的应用。Qt提供了丰富的控件库,为开发者提供了快速、便捷的界面设计和实现方

    相关 C# ListBox:列表框

            列表框 (ListBox) 将所提供的内容以列表的形式显示出来, 并可以选择其中的一项或多项内容,从形式上比使用复选框更好一些。 列表框中常用属性: ![