我在一基于对话框的应用程序中设置了两个(可多选)列表框(“列表框1”和“列表框2”)和两个按钮("添加"和“删除”),想实现以下的功能:在"列表框1"中选择多个选项,点击"添加"这些被选项就会显示到" 列表框2"中;在“列表框2”中选择多个选项,点击“删除”后,这些被选项就会从“列表框2”中删除掉。问题出在删除的时候:我写的健壮性语句老是有错(标有://****n),程序也不能正常地反我所选的选项一次过删除掉。我的代码如下,请问如何解决这问题呢?
//////////////////////////////////////////////////////////////////////////////////////////
"添加"按钮响就函数:
void CEasyListBoxDlg::OnButtonMutadd() 
{
// TODO: Add your control notification handler code here
int iSelCount,*ipSelCount,iCounter,iResult;
CString strTemp;
iSelCount=m_listBoxMutiple.GetSelCount();
ipSelCount=new int[iSelCount]; m_listBoxMutiple.GetSelItems(iSelCount,ipSelCount);
for(iCounter=0;iCounter<iSelCount;iCounter++)
{
m_listBoxMutiple.GetText(ipSelCount[iCounter],strTemp);
iResult=m_listBoxMutStatic.AddString(strTemp);
if(iResult==LB_ERR )
{
MessageBox("出错了。");
}
}

delete ipSelCount;
}
//////////////////////////////////////////////////////////////////////////////////////////
“删除”按钮响就函数:
void CEasyListBoxDlg::OnButtonMutdel() 
{
// TODO: Add your control notification handler code here
int iCounter,*ipSelCount,iSelCount,iResult;
iSelCount=m_listBoxMutStatic.GetSelCount();
ipSelCount=new int[iSelCount];
m_listBoxMutStatic.GetSelItems(iSelCount,ipSelCount); CString strTest;
for(iCounter=0;iCounter<iSelCount;iCounter++)
{
iResult=m_listBoxMutStatic.DeleteString(ipSelCount[iCounter]);
if(iResult==LB_ERR )
{
MessageBox("出错了。");
}
} delete ipSelCount;
}

解决方案 »

  1.   

    在AddString,DeleteString完成后, 列表框 的内容已改变Index  已经重新变化
    ipSelCount 的值不正确了
    解决方法:  从后往前删除
    CString strTest;
    for(iCounter=iSelCount;iCounter>=0;iCounter--)
    {
    iResult=m_listBoxMutStatic.DeleteString(ipSelCount[iCounter]);
    if(iResult==LB_ERR )
    {
    MessageBox("出错了。");
    }
    }
      

  2.   

    //////////////////////////////////////////////////////////////////////////////////////////
    “删除”按钮响就函数:
    void CEasyListBoxDlg::OnButtonMutdel() 
    {
    // TODO: Add your control notification handler code here
    int iCounter,*ipSelCount,iSelCount,iResult;
    iSelCount=m_listBoxMutStatic.GetSelCount();
    ipSelCount=new int[iSelCount];
    m_listBoxMutStatic.GetSelItems(iSelCount,ipSelCount); CString strTest;
    for(iCounter=0;iCounter<iSelCount;iCounter++)
    {
    iResult=m_listBoxMutStatic.DeleteString(ipSelCount[iCounter]);
                      m_listBoxMutStatic.GetSelItems(iSelCount,ipSelCount);
                      iCounter--;
                      continue;
    if(iResult==LB_ERR )
    {
    MessageBox("出错了。");
    }
    } delete ipSelCount;
    }