最近上网无事可做,于是想翻译一下codeproject上的文章,一来自已学习一下,二来方便大家
本篇文章的原文请见http://www.codeproject.com/listctrl/listctrldemo.asp,如翻译的不好请大家见谅
程序的效果图如下:
示例程序如下:
http://www.codeproject.com/listctrl/ListCtrlDemo/ListCtrlDemo.zip(请先登陆)
介绍
本文介绍MFC中的CListCtrl类,这篇文章包话CListCtrl的如下方面:
1.在你的对话框中填加一个CListCtrl
2.为CListCtrl填加成员变量
3.插入列(Inserting columns)
4.使用图片
5.插入项(Inserting items)
6.使用数据项(Using item data )
7.选择项
8.决定哪项被选中(Determining which items have been selected)
9.获得项信息(Getting item information)
10.处理CListCtrl消息
还包括一些高级话题:
1.使用选中标记(Using check marks)
2.使用背景图片
3.使用信息贴(Using Info Tips )
4.使用热光标(Using Hot Cursors )
5.关于扩展样式
本文假设你熟悉VC6++,并且能使用工作区(Workspace )窗口和类向导(classwizard)来进行操作.然后在对话
框子结点(in the Dialog child node)选择你的对框话,让他显示在屏幕的右手边,在浮动工具栏中选择一个
list control插入到你的对话框中,并调正好大小。如下图
类向导会自动为新的控件添加一个ID,例如 IDC_LIST1,如果想改变默认的ID,右键单击控件,选择属性
(Properties)来改变ID,如改为IDC_LIST_CTRL.
至此你就在对话框中添加了一个list,但你现在还没有方法控制它的动作,下一步就是为CListCtrl添加成员变
量。
为CListCtrl添加成员变量
为了把一个CListCtrl关联到对像,你需要创建一个ClistCtrl成员变量并使用MFC的对话框数据交换宏
(DDX_Control(CDataExchange*,int, CWnd&))来把窗口对像绑定到你的本地变量。虽然你可以手动来完成这
一切,但为什么不使用现成的工具类向导(ClassWizard)呢?
想要为你的list控件产生一个成员变量,比方说m_cListCtrl(ID是IDC_LIST_CTRL),通过Ctrl+W调出类向导
,选择成员变量(Member Variables)这一页,并选择Control ID为IDC_LIST_CTRL。当这些是高亮
(highlighted)时,点击添加变量(Add Variable)按扭并为新控件输入变量名。
一旦你按下OK,m_cListCtrl成员变量会添加到人自已建的对话框类中。
CListCtrl样式
list控件提供了四种不同的视图模式,这几种模式即可以在list的属性中改变,也可以在运行时改变。例子程序ListCtrlDemo在改变页时改变视图样式。
四种模式如下:
LVS_ICON:在控件中的每项都显示大图标
LVS_SMALLICON:在控件中的每项都显示小图标
LVS_LIST:在控件中的每项用小图标显示一个项的列表
LVS_REPORT:显示项的详细信息以便使扩展的项信息能够看到
如果你想建立一个像windows资源管理器中的详细信息(点击资源管理器的查看项中的详细信息)那样的视图,则要选择LVS_REPORT样式,一但你选择了这个样式,你要做的第一步就是建立列(columns)。