(转)MFC的ClistCtrl删除选中多行项目

本文详细介绍了在MFC的ClistCtrl控件中,如何正确删除选中多行数据,避免由于删除操作导致的行索引偏移问题,提供了完整的代码实现。

MFC的ClistCtrl控件添加了多行数据后,若要删除选中的多行数据,可以使用ClistCtrl的成员函数,在网上找了很多例子,发现都有问题,因为在删除ClistCtrl行的时候,删除行下面的行会上移,那么下一个要删除的行的索引会改变,导致删除的是删除行下两行位置的数据,删除不完全。

使用下面代码可完全删除选中行:

01
02
03
04
05
06
07
08
09
10
11
void CBatchConvert::OnDeleteFile()
{
    // TODO: 在此添加命令处理程序代码
    POSITION pos = m_ctrlBatchFile.GetFirstSelectedItemPosition();
    while(pos)
    {
        int nIndex = m_ctrlBatchFile.GetNextSelectedItem(pos);
        m_ctrlBatchFile.DeleteItem(nIndex);
        pos = m_ctrlBatchFile.GetFirstSelectedItemPosition(); //这步很重要,不然删除不完全
    }
}

原文出处:http://www.zoudaokou.com/index.php/archives/103

这里值得注意一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值