码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-09-26 00:25:44      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

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

 

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

 

  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. }  


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

 

 

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



 

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

 

 

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



 

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

 

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

 

 

测试正常

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

标签:

原文地址:http://www.cnblogs.com/gamekk/p/4839788.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!