通过继承CComboBox类来重载列表框,重载其虚函数DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)来实现列表框中添加带颜色块的列表项,列表框中共有16个带颜色块的列表项。    现在需要删除列表项中某一项(或全部也行),用DeleteString()和ResetContent()删除时程序报错中断,无法删除。请问如何才能删除?    我将代码放在一网站,该程序代码下载地址:http://www.strat.cn/colorcombox.zip  ,希望能得到高手们的指点。

解决方案 »

  1.   

    还是在DrawItem函数里面         long iFourthWidth = 0;
    long iItem = lpDrawItemStruct ->itemID;//列表框当前项的索引值
    long iState = lpDrawItemStruct->itemState ;//控件状态
    //加上下面那句就可以了
    if(iItem == -1 )
    return;^&^ ~~~~~~~~~
      

  2.   

    void CColorComboxDlg::OnButton1() 
    {
    m_colorbox.DeleteString(m_colorbox.GetCurSel());//就可以删除了

    }
      

  3.   

    很谢谢,实际上出问题的程序不是上面所指的程序,而是另外一个软件。其病态很特殊,在某些情况下可以删除,而有时又无法删除。待这个帖子贴出去后我才发现上述例题可以删除列表项而不会报错。呵呵。我一直在寻找可以删除和不可以删除时的环境区别,结果毫无线索,不过按你说的加上 if(iItem==-1)return;后问题竟然也被解决了。虽然两者在逻辑上导致错误的区别还是依旧找不到。