MFC列表控件 (CListCtrl) 的删除多行

http://blog.csdn.net/ccnyou/article/details/7841850

在网上搜索了下,结果不怎么理想,很多类似的答案:

[cpp] view plaincopyprint?

  1. POSITION   pos   =   pList-> GetFirstSelectedItemPosition();
  2. if   (pos   ==   NULL)
  3. TRACE0( "No   items   were   selected!\n ");
  4. else
  5. {
  6. while   (pos)
  7. {
  8. int   nItem   =   pList-> GetNextSelectedItem(pos);
  9. pList-> DeleteItem(nItem);
  10. }
  11. }

但是实际测试这样是不行的,如

[cpp] view plaincopyprint?

  1. 第一行文本
  2. 第二行文本
  3. 第三行文本
  4. 第四行文本

如果选择1,2,删除后剩下的是

[cpp] view plaincopyprint?

  1. 第二行文本
  2. 第四行文本

那是因为删除第一行后,这时第二行成为了第一行,再准备删除第二行,就删除到原来的第一行。然后我就想了一个,递归实现,从后面删起,就不会受变动影响:

[cpp] view plaincopyprint?

  1. void CMyDlg::OnDelReply()
  2. {
  3. POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition();
  4. if (pos == NULL)
  5. {
  6. return;
  7. }
  8. DelReplyWithPosition(pos);
  9. }
  10. void CMyDlg::DelReplyWithPosition(POSITION pos)
  11. {
  12. int iItemIndex = m_ListCtrl.GetNextSelectedItem(pos);
  13. if (pos != NULL)
  14. {
  15. DelReplyWithPosition(pos);
  16. m_ListCtrl.DeleteItem(iItemIndex);
  17. }
  18. else
  19. {
  20. m_ListCtrl.DeleteItem(iItemIndex);
  21. }
  22. }

测试正常

时间: 2024-11-04 09:57:14

MFC列表控件 (CListCtrl) 的删除多行的相关文章

虚拟列表控件---加载大数据行

虚拟列表控件---加载大数据行 平常所用到的列ListView/ListCtrl控件,都是只有行至几百行数据,直至今日,在项目中遇到了上10W量级数据条,终于感觉到普通加载的艰辛,遂到网上乱找一通,发现大同小异,转载了这篇比较详细的,后面代码所用到的m_Items,为存放的列表的数据结构列表, 这篇文章虽详尽,改日做一个DEMO, Demo 一.什么是虚拟列表控件 虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件.. 二.为什么使用虚拟列表控件 我们知道,通常使用列表控件CListC

MFC列表控件 CListCtr

1.常用属性设置:view -> Report(报表方式) 2.常用接口 接口 功能 CListCtrl::SetExtendedStyle 设置列表风格 CListCtrl::GetExtendedStyle 获取列表风格 CListCtrl::InsertColumn 插入某列内容,主要用于设置标题 CListCtrl::InsertItem 在某行插入新项内容 CListCtrl::SetItemText 设置某行某列的子项内容 CListCtrl::GetItemText 获取某行某列的

[VC/MFC]虚拟列表控件

[VC/MFC]虚拟列表控件 一.什么是虚拟列表控件 虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件.. 二.为什么使用虚拟列表控件 我们知道,通常使用列表控件CListCtrl,需要调用InsertItem把要显示的数据插入列表中,之后我们就不必关心数据在哪里了,这是因为控件自己开辟了内存空间来保存这些数据.现在假设我们要显示一个数据库,里面的信息量很大,有几十万条记录.通常有两种方法解决这个问题:1是仅仅在ListCtrl中插入少量的数据,比如100个,然后通过[上一页][下一

高级列表控件ListCtrl关联的MFC中的类:CListCtrl

高级列表控件ListCtrl关联的MFC中的类:CListCtrl■ 报表样式ListCtrl常用操作:1.添加列标题头:InsertColumn2.获取与设置列宽:GetColumnWidth.SetColumnWidth3.添加一行:InsertItem.SetItemText4.获取与设置单元文本:GetItemText.SetItemText5.允许多行选中时,获取选中的行数:GetSelectedCount6.单行选中时,获取选中的行:GetSelectionMark7.选中某行:Se

sqlLite 接口的使用 包含MFC控件CListCtrl代码示例

SqlLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl.C#.PHP.Java等,还有ODBC接口,同样比起Mysql.PostgreSQL这两款开源的世界著名数据库

MFC 学习之 多对话框及列表控件

MFC 在界面这块,不得不说比较难看,虽然如此,但是它的简洁性(当然,不是说它的代码,而是相对于程序员,减少了自己敲写代码的工作量). 下面的例子是新建对话框,在新的对话框里添加列表控件,在列表控件里显示必要信息. 效果如图: 新建 MFC 工程,命名为 Draw,添加对话框,新建类 MyPanel <pre name="code" class="cpp">//CDrawDlg.h public: afx_msg void OnBnClickedBtSt

MFC可视化 列表控件的使用

1.应该加入头文件 #include <Atlbase.h> 2.示例 类向导给列表控件绑定变量m_list DWORD   dwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_FLATSB; m_list.ModifyStyle(0,LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS);m_list.SetEx

列表控件ListBox关联的MFC中的类:CListBox

######################################################## 1.在列表的结尾添加一项:AddString 2.在列表的指定位置添加一项:InsertString 3.获取列表中项的个数:GetCount 4.获取某项的文本:GetText 5.在单选列表控件中,获取与设置当前选中项:GetCurSel.SetCurSel 6.在列表项中查找指定的字符串:FindString.FindStringExact 7.删除列表中所有的项:ResetC

VC/MFC ListCtrl 控件功能使用汇总(转)

以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtrl类 SDK:以 "ListView_"开头的一些宏.如 ListView_InsertColumn -------------------------------------------------------------------------------- 1. CListCtrl 风格      LVS_ICON: 为每个item显示大图标      LVS_SMALLIC