博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ListCtrl的多行删除
阅读量:4635 次
发布时间:2019-06-09

本文共 1298 字,大约阅读时间需要 4 分钟。

这个相对前面九个条款是比较麻烦的,因为如果你要删除多行的话。往往要出错

  比如,我现在要删除第0行和第1行(列表的行序列是从0开始的)

  那么好啊。我来删了

  m_listctrl.DeleteItem(0)

        m_listctrl.DeleteItem(1)

  恭喜你,错了,我好开心啊 :)

  因为你删除第0行以后,下面的行会往上移,那么原来的第1行就变成了第0行,那么你再 m_listctrl.DeleteItem(1),那么删除的是原来的第2行,真麻烦,

   所以,只有从下往上删,才是安全的,先删的,不会影响后面的操作,

    m_listctrl.DeleteItem(1)

        m_listctrl.DeleteItem(0)

  但有时候,我们也不知道要删除哪些行,只知道要删除选中的那些行,像条款九中的那些

   如果我们还是用

   

POSITION pos = m_listctrl.GetFirstSelectedItemPosition();

if (pos == NULL)
   TRACE0("No items were selected!\n");
else
{
  while (pos)
  {
     int nItem = m_listctrl.GetNextSelectedItem(pos);
   

 m_listctrl.DeleteItem(nItem );

  }

}

你就等着收尸吧

这时候我们就要B4微软了,为虾米木有GetLastselectedItemPosition 和GetPrevSelectedItem

多写一对成员函数会死啊 :(

 没办法,办法自己想,这里有个笨办法

 POSITION  sSelPos = NULL;

 while(sSelPos = m_listctrl.GetFirstSelectedItemPosition())

 {
        int nSelItem = -1;
         nSelItem = m_listctrl.GetNextSelectedItem(sSelPos);

         if(nSelItem >= 0 && nSelItem<m_listctrl.GetItemCount())

       {

             好了,这个nSelItem 就是我们要的DD

      }

}

GetNextSelectedItem这个函数,看msdn的用法,其实是返回第一个的index,然后走到下一个选中的行去,所以这么做也是安全的,在实际中,俺也是这么做的,测试也通过,没问题的

当然,还有个办法,先通过GetFirstSelectedItemPosition和GetNextSelectedItem

来获取所有的选中行的index,然后把这些index放到一个数组里,然后再从下往上删

唉真麻烦啊,还要不定数组,不说用new在堆上开吧,那么一个vector总是要的吧,麻烦啊

所以我暂时是用上述的办法来删除,也供大家参考,希望能找到更好的办法。

转载于:https://www.cnblogs.com/tjguo/archive/2012/10/15/2724503.html

你可能感兴趣的文章
Maven的安装
查看>>
angular初步认识一
查看>>
springmvc3.2+spring+hibernate4全注解方式整合(一)
查看>>
Elgg网站迁移指南
查看>>
素数筛法优化
查看>>
installshield 注册dll
查看>>
Sublime Text 3 及Package Control 安装(附上一个3103可用的Key)
查看>>
LTE QCI分类 QoS
查看>>
【Flask】flask+uwsgi+nginx环境部署
查看>>
Get MAC address using POSIX APIs
查看>>
bzoj2120
查看>>
基于uFUN开发板的心率计(一)DMA方式获取传感器数据
查看>>
【dp】船
查看>>
oracle, group by, having, where
查看>>
⑥python模块初识、pyc和PyCodeObject
查看>>
object-c中管理文件和目录:NSFileManager使用方法
查看>>
Kibana:分析及可视化日志文件
查看>>
nodejs pm2使用
查看>>
cocos2d-x 3.10 PageView BUG
查看>>
装饰器的基本使用:用户登录
查看>>