我的listbox可以多选的,以下代码用来删除用户选择的多个item
int num,nIndex,nSelCount;
int aryIndex[100]; //get the count of selected items
nSelCount = m_lstFileList.GetSelCount(); //get the indexs of the selected items
m_lstFileList.GetSelItems(nSelCount,aryIndex); //delete the selected items
for (num = 0;num < nSelCount;num ++)
{
nIndex = aryIndex[num];
                  m_lstFileList.DeleteString(nIndex);
}
但是运行起来总是不能正确删掉所选的item,往往少删了一个,单步执行也没有问题
请问大侠这是为什么啊?

解决方案 »

  1.   

    删除一个之后, INDEX就会发生变化, 所以这种删除是不对的
      

  2.   

    你可以倒过来删除, 先删除最后选定的
    for (num = nSelCount-1;num < 0;num--)
    {
    nIndex = aryIndex[num];
                      m_lstFileList.DeleteString(nIndex);
    }
      

  3.   

    int iItem ;
    POSITION pos = m_lstFileList.GetFirstSelectedItemPosition() ;
    while( pos != NULL )
    {
        iItem = m_lstFileList.GetNextSelectedItem( pos ) ;
        m_lstFileList.DeleteItem( iItem );
    }
    试一下这个样子!