ListBox控件的使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CListBox是一种很常见的操作控件,用来从列表中选择相应的内容,这个控件以前没有用过,而且在一些书或教程上面讲解的很简单,无法从中看出如何来使用该控件,为了方便以后使用,这里先从MSDN上面的说明开始介绍起,把该控件的有关内容翻译一下,然后做一个程序来综合测试一下相关的功能
CListBox是从CWnd类继承下来的,对该类的总体介绍如下:
一、总体介绍:
一个列表框显示了一系列的项目,比如说文件名等,用户可以查看和选择操作。
在单选列表框中,用户只能选择一个项目,而对于多选列表框,一系列的项目都可以被选择,当用户选择项目后,该项目会被高亮显示,同时列表框将向其父窗口发送一个消息。
你可以用两种方法来创建一个列表框:从对话框个工具栏中拖动或者是直接用代码来创建。但用代码来直接创建时,先构造一个单选框的对象,然后调用Create方法创建一个列表框控件并将它和一个列表框对象关联起来。如果使用对话框工具来生成列表框,那么在对话框类中建立一个列表框的变量,然后使用DoDataExchange函数中的DDX_Control宏来连接该变量和控件(这一点在你用向导创建变量的时候会自动完成)
构造函数可以是一个一步过程,仅仅调用Create方法就可以了
如果你想处理列表框向其父窗口发送的消息(常常是CDialog类),那么你可以添加一个消息循环的入口和一个消息相应函数,格式如下:
ON_Notification( id, memberFxn )
这里id表示的是列表框子窗口的ID,而memberFxn则是父窗口中用来处理这个消息的消息响应函数,其原型如下:
afx_msg void memberFxn( );
下面的表格列举了有哪些消息能够发送给父窗口:
当你使用对话框工具箱来创建一个列表框时,列表框对象会在对话框关闭时自动销毁。
当你在一个窗口(WINDOW)中创建列表框时,你需要自行销毁其对象。如果你是在栈中创建列表框对象,那么它会自动销毁,而如果你在堆中创建列表框对象,比如采用new运算符,那么你必须调用delete方法来销毁该对象
如果你在列表框对象中申请了内存空间,你需要重载列表框的解构函数来释放内存
二、列表框的属性:
从上面的介绍中可以看到,列表框有不同的类型,这些都是通过设置属性来完成的,在VS2008上至少是这么来设置的,下面介绍一下几个关键的属性:
1)Selection属性:该属性用来指定列表框是否允许用户同时选择多个项,前面讲的多选列
表框就是将该属性选中,该属性有single,multiple等几个值
2)Notify属性:该属性即使前面的表格中提到的LBS_NOTIFY样式,目前这么认为,因为
没有找到其它的Notify属性,注意的是,该属性默认是true,即使用该样式
3)Owner Draw属性:同按钮一样,列表框也允许用户进行自绘制操作,这个属性即控制
是否使用自绘制操作
三、常用的列表框操作函数:
下面列举出来的函数,都是很可能用到的常用功能函数,因此在列表时,就已经采用例子试过了,使用时注意细节
四、使用列表框的方法:
目前尝试过的有两种方法,一种是对相应的列表框控件建立一个Control类型的变量,然后用该变量来调用对应的成员函数,另一种方法更灵活一点,就是建立一个列表框类型的指针,然后调用GetDlgItem方法,把列表框的ID输入为参数,获取对应的指针,注意这种方法的指针要进行一下强制类型转换