想删除CComboBox中列表中的所有字符串,
使用如下代码int nCount = ((CComboBox *)GetDlgItem(IDC_COM_SELITEM))->GetCount();for (int i=0; i<nCount; i++)
{
((CComboBox *)GetDlgItem(IDC_COM_SELITEM))->DeleteString(i);
}nCount = ((CComboBox *)GetDlgItem(IDC_COM_SELITEM))->GetCount();这样始终不能删完在使用如下代码int nCount = ((CComboBox *)GetDlgItem(IDC_COM_SELITEM))->GetCount();
while (nCount != 0)
{
for (int i=0; i<nCount; i++)
{
((CComboBox *)GetDlgItem(IDC_COM_SELITEM))->DeleteString(i);
} nCount = ((CComboBox *)GetDlgItem(IDC_COM_SELITEM))->GetCount();
}这样可以删完了,不感觉比较烦琐.请问有没有更好的方法

解决方案 »

  1.   

    CComboBox::ResetContent
    void ResetContent( );ResRemoves all items from the list box and edit control of a combo box.
    用这个函数
    如果要用你的那种方式,将第一个稍微修改一下即可,改成递减的方式,不要用递增的方式,如下int nCount = ((CComboBox *)GetDlgItem(IDC_COM_SELITEM))->GetCount();for (int i=nCount-1; i>=0; i--)
    {
        ((CComboBox *)GetDlgItem(IDC_COM_SELITEM))->DeleteString(i);
    }
      

  2.   

    每次删除后 combobox的行数就变了 所以你这样就能删一半参见楼上做法