我想删除列表控件的多行记录。但是在调用列表控件类的函数DeleteItem时,发现,每删除一列时,获得的下一个选中记录的位置都会改变。所以就用了以下方法来实现。但又发现了问题,但删除记录较多时(>3).列表只能删除选种的3行记录。不知道大家有没有什么好方法啊。帮帮小弟吧
POSITION pos = m_list.GetFirstSelectedItemPosition();
if (pos == NULL)
  return ;
int i=0;
while (pos)
{
   int nItem = m_list.GetNextSelectedItem(pos);
   CString CardNo=m_list.GetItemText(nItem-i,1);
   m_list.DeleteItem(nItem);
   i++;
}
}

解决方案 »

  1.   

    更正一下:m_list.DeleteItem(nItem);应该是m_list.DeleteItem(nItem-i);
      

  2.   

    你用m_list.DeleteAllItems()不行吗 或者m_list.DeleteItem(0); 这样也可以
      

  3.   

    42252343(大跃进的猪)
    你说的方法只能用来删除全部的数据,我是要删除部分选中的一些数据。
    还是 Mackz(在相互) 的方法不错。谢谢了。
      

  4.   

    POSITION pos;
    pos=m_ctlBitList.GetFirstSelectedItemPosition();
    int nIndex=0;
    while((nIndex=m_ctlBitList.GetNextSelectedItem(pos))!=-1)
    {
             Delete(nIndex);
    }