【windows C语言程序设计】 使用ListBox控件,基本知识的准备和研究(一)

来源:互联网 发布:阿里云短信验证码平台 编辑:程序博客网 时间:2024/06/05 02:28

今天我要好好学习ListBox这个控件,这是在MSDN中的位置,VS2003MSDN就是好目的地,就是漂亮。就是好用。

 

 

首先这些外国字,反译成汉字,使用外国佬的google翻译 + 金山词爸,能明白大概意思就行了,主要的内容记录在下在,方便以后更深入的整理成资料。

 

MSDN中的资料位置

MSDN中的资料 

列表框

-------------------------------------------------- ------------------------------
有关列表框
本节介绍列表框的功能。
使用列表框

函数
DlgDirList
DlgDirList
函数自动显示指定目录中的文件名称。可以自己指定要过滤的文件属性。当然也可以只显示一些驱动器比如:C盘,D盘之类的东西,和VB中的listbox是一样功能。自从学了VisualBasic以后,这些东西就变得简单多了。一看就明白。

DlgDirSelectEx
DlgDirSelectEx
是上面函数的扩展


GetListBoxInfo
GetListBoxInfo
函数返回指定列表框中某一项的信息。

 

下面就是最重要的消息符号了,知道这些东西,就可以SendMessage来操作ListBox


LB_ADDFILE
应用程序发送消息的LB_ADDFILE指定的文件名添加到列表框,其中包含一个目录列表。
发送这个消息之前,先要使用DlgListDir初始控件。

 

LB_ADDSTRING
应用程序发送一个LB_ADDSTRING消息添加一个字符串到一个列表框。如果列表框没有LBS_SORT样式,该字符串被添加到列表的末尾。否则,该字符串被插入到列表和列表进行排序。

//就是不一个字符串,没有排序的话,默认添加到最后一行。

LB_DELETESTRING
应用程序发送一个LB_DELETESTRING消息删除列表框中的字符串。

//对面ADD的消息,这个是删除一个项目

LB_DIR
应用程序发送消息到一个LB_DIR列表框名称添加到列表框中显示的清单。该消息增加了目录和文件指定的字符串匹配和文件属性集的名称。 LB_DIR还可以添加驱动器号映射到列表框中。
//
这个消息和DlgListDir函数差不多的吧


LB_FINDSTRING
应用程序发送消息的LB_FINDSTRING找到一个列表框,以指定字符串开始的第一个字符串。

//查找符串,找到会自动定位到那一行的。

LB_FINDSTRINGEXACT
应用程序发送LB_FINDSTRINGEXACT,查找第一个列表框中的字符串完全匹配的指定字符串,除了搜索不区分大小写。

//另外一种查找方法

LB_GETANCHORINDEX
应用程序发送一个LB_GETANCHORINDEX信息检索锚项目的索引

//是不是和下面的一样的。


LB_GETCARETINDEX
应用程序发送一个LB_GETCARETINDEX消息,以确定该项目具有在多选列表框的焦点矩形指标。该项目可能会或可能不会被选中。
//
返回当前焦点所在的项目 ,焦点所在的项目不一定是被选中的那一行。

LB_GETCOUNT
应用程序发送一个LB_GETCOUNT信息检索列表框中的项目数。

//返回控件中的项目行数,最多32767个,超过这个数会返回-1

LB_GETCURSEL

发送LB_GETCURSEL信息检索当前选定项的索引在一个单项选择列表框,如果有的话。

//返回当前选中项目的索引

LB_GETHORIZONTALEXTENT
应用程序发送消息的LB_GETHORIZONTALEXTENT像素检索列表框的宽度,其中列表框可以水平滚动(可滚动的宽度)如果列表框具有水平滚动条。

//返回水平滚动条的宽度,自绘样式才用得到吧。

LB_GETITEMDATA
应用程序发送一个LB_GETITEMDATA信息检索应用程序定义的值指定列表框项相关联。

//获取保存在每个项目扩展位中的数据,这个功能非常的好,非常的好。



LB_GETITEMHEIGHT
应用程序发送一个LB_GETITEMHEIGHT信息检索在一个列表框项目的高度。

//获取每一个项目的高度,自绘画的时候才有用。

LB_GETITEMRECT
应用程序发送一个LB_GETITEMRECT信息检索范围的矩形框的列表项,因为它是目前在列表

框中显示的尺寸。

//返回一整个项目的框框大小,没什么用,自给画的时候才有用。

LB_GETLISTBOXINFO
应用程序发送一个LB_GETLISTBOXINFO信息检索在指定的列表框中,每列的项目数。

//The return value is the number of items per column.

返回一个项目,相当于GetListBoxInfo函数,等下再学。

LB_GETLOCALE
应用程序发送一个LB_GETLOCALE信息检索列表框的当前语言环境。您可以使用语言环境确定正确的显示文本排序顺序(列表框与LBS_SORT样式)和文本由LB_ADDSTRING消息补充说。

//返回一个区域信息,相当于C语言中的local一样的。

LB_GETSEL
应用程序发送一个LB_GETSEL信息检索项目的选择状态。

//判断某一个项目的选择状态,是选中了,还是没有选中。

LB_GETSELCOUNT
应用程序发送一个LB_GETSELCOUNT信息检索在多选列表框中选定的项目总数。
//
返回这个控件中有几个被选中的项目。
LB_GETSELITEMS
应用程序发送一个LB_GETSELITEMS消息装满一个整数,指定在一个多选列表框中选定的项目,项目编号数组缓冲区。

//返回一个数组,就是那些被选中的项目,是一个字符串数组吗??

LB_GETTEXT
应用程序发送一个LB_GETTEXT信息检索从一个列表框中的字符串。

//返回指定索引号的项目字符


LB_GETTEXTLEN
应用程序发送一个LB_GETTEXTLEN信息检索中的一个列表框中的字符串的长度。

//判断某个项目的字符串长度

LB_GETTOPINDEX
应用程序发送一个LB_GETTOPINDEX信息检索在列表框中第一个可见项的索引。最初的索引为0的项在列表框的顶部,但如果列表框的内容已被滚动的另一个项目可能会在顶部。

//选择中那个在框框中最顶层的,而且是能看见的,被挡住的不算。

LB_INITSTORAGE
再加入一个应用程序发送大量的项目到列表框LB_INITSTORAGE消息。此消息分配用于存储列表框项目的记忆。

//发送大指的项目用到的。

//wParam   指定要添加的项目个数

//lParam  指定这要分派字符串的内存总数,用字节表示

 

LB_INSERTSTRING
应用程序发送一个LB_INSERTSTRING信息插入到列表框中的字符串。不像LB_ADDSTRING消息,LB_INSERTSTRING消息不会导致与LBS_SORT样式列表进行排序。

//插入,在指定的位置添加字符串

LB_ITEMFROMPOINT
应用程序发送信息检索的LB_ITEMFROMPOINT最近在一个列表框中指定点的项目零的索引。
//
这个消息很有用,使用鼠标当前的坐标来判断在哪个项目上。。。


LB_RESETCONTENT
应用程序发送一个LB_RESETCONTENT消息删除列表中的所有项目。

//就是全部清空,VB中的clear一样。

 

LB_SELECTSTRING

应用程序发送一个LB_SELECTSTRING信息搜索一个项目,在指定的字符串中的字符开始一个列表框。如果找到一个匹配的项目,该项目被选中。
//
查找并选中这个项目。


LB_SELITEMRANGE
应用程序发送消息的LB_SELITEMRANGE选择一个或多个多选列表框连续项。

//选择多个项目

//wParam  指定显示的状态,TRUE或者是FALSE 是高亮显示还是不高亮显示的意思。

lParam 低字节表示开始的索引事情,高字节表示结束的索引号


LB_SELITEMRANGEEX
应用程序发送消息的LB_SELITEMRANGEEX选择一个或多个多选列表框连续项。

//这个是上面那个消息的扩展,wparam表示开始索引号,lParam表示结束索引号

LB_SETANCHORINDEX
应用程序发送一个LB_SETANCHORINDEX消息设置锚项目

//设置那个项目为焦点项目。
LB_SETCARETINDEX
应用程序发送一个LB_SETCARETINDEX消息设置指定索引在多选列表框的焦点矩形的项目。如果该项目是不可见的,它是滚动到视图。

//设置那个项目为焦点项目,游动条会自己定位到这个项目,就是边上会有虚线框的那种。

LB_SETCOLUMNWIDTH
应用程序发送消息到一个LB_SETCOLUMNWIDTH多列列表框(与LBS_MULTICOLUMN样式创建)来设置宽度,以像素为单位,在列表框中的所有列。

//设置每一列的宽度

LB_SETCOUNT
应用程序发送一个LB_SETCOUNT消息设置与LBS_NODATA风格创建了一个列表框的项目数和不符合LBS_HASSTRINGS样式创建。
//
这个消息干什么用啊。设置项目总数,而且是LBS_NODATA样式的,不能有LBS_HASSTRING样式的。

LB_SETCURSEL
应用程序发送消息的LB_SETCURSEL选择一个字符串,然后滚动到视图中,如有必要。当新的字符串被选中,从列表框中删除以前选定的字符串亮点。
//
设置某个项目为当前选中的项目的,焦点也应该在这里个项目上吧。


LB_SETHORIZONTALEXTENT
应用程序发送一个LB_SETHORIZONTALEXTENT消息设置宽度以像素为单位,其中一个列表框可以水平滚动(可滚动的宽度)。如果列表框的宽度小于此值,水平滚动条滚动水平在列表框中的项目。如果列表框的宽度等于或大于这个值,水平滚动条是隐藏的。
//
设置水平滚动条的信息,有什么用?


LB_SETITEMDATA
应用程序发送一个LB_SETITEMDATA消息设置与在一个列表框中指定的项目关联的值。

//这个消息好,很有用,可以绑定一个指针到这个项目的扩展位,太有用了。

LB_SETITEMHEIGHT
应用程序发送一个LB_SETITEMHEIGHT消息设置在一个列表框中的像素高度,物品。如果列表框具有LBS_OWNERDRAWVARIABLE风格,此消息设置由wParam参数指定的项目的高度。否则,此消息设置列表框中的所有项目的高度。
//
设置项目的高度,只有自绘画风格才有用。
LB_SETLOCALE
应用程序发送一个LB_SETLOCALE消息设置列表框的当前语言环境。您可以使用语言环境确定正确的显示文本排序顺序(列表框与LBS_SORT样式)和文本由LB_ADDSTRING消息补充说。
//
设置文字的区域显示风格

LB_SETSEL
应用程序发送消息的LB_SETSEL中选择一个多选列表框中的字符串。
//
选中某个项目


LB_SETTABSTOPS
应用程序发送一个LB_SETTABSTOPS消息设置在一个列表框中的制表位位置。

//设置TAB键的顺序

LB_SETTOPINDEX
应用程序发送一个LB_SETTOPINDEX信息,以确保在列表框中特定项目是可见的。

//显示第几个项目作为框框中最顶层的,第一个显示的内容。

 

上面的这些消息一定要掌握使用方法,今天要做出一个DEMO例子来实际操作一下。

原创粉丝点击