的列表控件 (VS2010 修改版).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在界面上成组地显示含有多个数据项的数据集,是列表控件的主要用途。如下图所示,Windows资源管理器中文件列表的显示就是列表控件的一个典型应用。 ? ? 从数据显示的角度看,列表控件的功能已经比较强大了(支持大图标、小图标、列表、详细资料等多种显示方式;支持排序、查找、定位、增删等)。但美中不足的是,它不支持数据项的编辑功能。在很多的实际应用中,需要在显示数据的同时,允许用户“就地”对某些数据项进行修改。例如,在Windows资源管理器中,我们可以在浏览文件夹的同时修改其中任何一个文件的名字。这主要得益于Windows资源管理器中所使用的列表控件支持字段编辑功能。否则,简单的文件名修改也会变成一件很麻烦的事情。 ? ? 因此,标准的列表控件只适合用于数据集的显示,而具有数据编辑功能的列表控件却可以在更广的范围里得到应用。本文重点介绍其实现过程。 1.基本原理 在列表控件上实现可编辑功能的原理非常简单,借助一个编辑框控件即可达到目的。具体步骤如下:①从 CListCtrl派生一个子类,并拦截某个意味着进入编辑状态的消息,获取需要编辑的数据项的相关信息。所拦截的消息通常选择鼠标消息(例如双击),这样更容易确定数据项在列表控件中的位置(行号、列号)及其所占的区域。②将一个编辑框控件移动到待编辑数据项所在的区域上,装入待编辑的数据并显示出来,供用户进行修改。③编辑结束后将修改后的数据返回给列表控件,让其在对应的子项上显示新的数据。 2.实现过程 1)在VC 6.0中,新建一个基于对话框的项目,名称:Exam02。 2)编辑对话框资源,删除IDOK 按钮和静态标签;保留IDCANCEL按钮,将其标题改为“退出”;添加一个列表控件,将其显示风格改为report。利用类向导为列表控件添加一个关联变量m_list(Type:CListCtrl)。在CExam02Dlg::OnInitDialog函数中添加如下代码: ?m_list.InsertColumn(0,_T(1),LVCFMT_LEFT,100); ?m_list.InsertColumn(1,_T(2),LVCFMT_LEFT,100); ?m_list.InsertColumn(2,_T(3),LVCFMT_LEFT,100); ?m_list.InsertColumn(3,_T(4),LVCFMT_LEFT,100); ?m_list.InsertItem(0,_T(123)); ?m_list.SetItemText(0,1,_T(c)); ?m_list.SetItemText(0,2,_T(d)); ?m_list.SetItemText(0,3,_T(e)); ?m_list.InsertItem(1,_T(456)); ?m_list.SetItemText(1,1,_T(f)); ?m_list.SetItemText(1,2,_T(g)); ?m_list.SetItemText(1,3,_T(h)); ?m_list.InsertItem(2,_T(789)); ?m_list.SetItemText(2,1,_T(i)); ?m_list.SetItemText(2,2,_T(j)); ?m_list.SetItemText(2,3,_T(k)); ?m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT );? 如果在此时运行程序,则显示一个普通的列表控件,不具备编辑功能(如下图所示)。 ? 3)添加一个类:CEditListCtrl,继承自CListCtrl。(VS2010步骤: 右键”Exam02”- “Add” – “Class” – “MFC Class”, 不用管直接确定会弹出界面的) 注释掉 EditListCtrl.cpp文件中的 #include Exam02.h。该指令是类向导自动生成的,而CEditListCtrl类的实现并不依赖它。如不注掉它,将该类用于其他项目时,会无法编译。 (这个地方不要注释,否则有一个控件IDC_EDIT找不到) 在 Exam02Dlg.h的头部添加:#include EditListCtrl.h;将CListCtrl m_list;语句替换成CEditListCtrl m_list;(该操作将列表控件资源与CEditListCtrl类关联起来,效果与椭圆形按钮实现过程的步骤4相同)。 此时程序的执行效果与步骤2是完全一样的。但控制列表控件行为的类已经换成CEditListCtrl了。接下来只需要对CEditListCtrl进行修改,就可以改变列表控件的行为了。 4)添加一个类:CItemEdit,继承自CEdit。注意,虽然这个类单独生成一样可以使用,但其主要作用就是为 C

文档评论(0)

153****9595 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档