如题

解决方案 »

  1.   

    int nDeled = 0;
    POSITION pos = m_List.GetFirstSelectedItemPosition();
    while (pos)
    {
    m_List.DeleteItem(m_List.GetNextSelectedItem(pos) - nDeled);
    nDeled++;
    }
      

  2.   

    yang79tao() 你的方法是可以删除的,两项以内的可以完全删除,但是3,4项的时候就会删除前两项,第最后项没有删除,5项的时候就会删除前三项,第4,5项没有删除,这是为什么啊??
      

  3.   

    int nDeled = 0;
    POSITION pos = m_List.GetFirstSelectedItemPosition();
    while (pos)
    {
    m_List.DeleteItem(m_List.GetNextSelectedItem(pos) - nDeled);
    nDeled++;
    POSITION pos = m_List.GetFirstSelectedItemPosition();
    }
      

  4.   

    那你用下面这个方法吧,万能的,只是看起来有点啰嗦:
    int* pDelRows = new int[m_ListCtrl.GetSelectedCount()];
    int nCount = 0;
    POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition();
    while (pos)
    pDelRows[nCount++] = m_ListCtrl.GetNextSelectedItem(pos);
    while (nCount--)
    m_ListCtrl.DeleteItem(pDelRows[nCount]);
    delete[] pDelRows;
      

  5.   

    结贴了也要讲一句,抱歉POSITION pos = m_List.GetFirstSelectedItemPosition();应该是
    pos = m_List.GetFirstSelectedItemPosition();才对,因为你做过删除操作了SelectedItem发生了变化,要重新GetFirstSelectedItemPosition();一次。