如何修改CListBox中任一Item的CString,难道只能deletestring后再addstring?请教高手??

解决方案 »

  1.   

    SetItemText(int nItem,int nSubItem,LPCTSTR lpszText);
      

  2.   

    就CListBox中任一Item的CString来说,是:
    用两个语句达到修改效果
    m_list.DeleteString(nSel);
    m_list.InsertString(nSel, "");当然你也可以重载CListBox来实现
      

  3.   

    谢谢,我的程序中如用deletestring后insertstring却出现闪烁现象,不知能否提供如自定义函数SetTest(int nIndex,CString newstr)之类的代码?
      

  4.   

    那是因为你频繁的deletestring后insertstring吧....
    用LockWindowUpdate与UnlockWindowUpdate呢?
      

  5.   

    还是闪呀!重载DrawItem又该如何做呢?
      

  6.   

    用LockWindowUpdate与UnlockWindowUpdate应该不会闪阿~难道你是每段delete和insert前后都加这个???
      

  7.   

    void CHyToolDlg::SetProgress(int total_read, int file_size,int nIndex)
    {
    // LockWindowUpdate();
    m_cListBox.DeleteString(nIndex);
    int percent=total_read*100/file_size;
    int blocknum=percent*20/100;//20个方块代表100%
    CString str="",temp;
    for (int i=0;i<blocknum;i++) str+="█";
    temp.Format("%d",percent);
    str=str+temp+"%";
    // UnlockWindowUpdate();
    m_cListBox.AddString(str);
    }
    SetProgress显示进度,如上加上LockWindowUpdate()和UnlockWindowUpdate()还是闪
      

  8.   

    void SetText(CListBox& list, int nSel, const CString& strItem)
    {
    list.LockWindowUpdate();
    list.DeleteString(nSel);
    list.InsertString(nSel, "");
    list.UnlockWindowUpdate();
    }