我的CListCtrl需要实时刷新,我目前的方法是:
    首先DeleteAllItems(),再一个个重新填充进去。可是这种方法显然很笨。
我希望如下方式:
1. 首先通过finditem()来查找某个item是否已经存在,如果不存在则插入。
2. 检验某item是否存在时,希望通过它的第一列来检索,(如某人的身份证号码)可是我不太会用finditem函数,希望哪位高手给出个简单的例子。谢谢了!!!

解决方案 »

  1.   

    char szText[255];BOOL bFind = FALSE;
    for(int nItem  = 0; nItem < m_List.GetItemCount(); nItem ++)
    {
       m_List.GetItemText(nItem, 0, szText);
       if(strcmp(szText, szFind) == 0)
      {
          bFind = TRUE;
    break;
       }
    }if(!bFind)
    {
      Insert a list item
    }
      

  2.   

    LVFINDINFO info;
    CString    strtemp = _T("");
    BOOL    bFind = FALSE;
    CString    strID = _T("1102342324234234");//你要插入的身份证ID info.flags = LVFI_PARTIAL|LVFI_STRING;
    info.psz = strID;
    for(int nIndex=0; i < m_list.GetItemCount(); ++nIndex)
    {
    m_list.GetItemText(nIndex, 0, strtemp); if(m_list.FindItem(&info) == -1 )
    continue;
    else
    {
    // strtemp.Format("关键字在第%d行", nIndex+1);
    // AfxMessageBox(strtemp);
    bFind = TRUE;
    break;
    }
    }
    if(!bFind)
    {
    m_list.InsertItem(m_list.GetItemCount(), strID);
    }
      

  3.   

    上面代码有错。改正
    BOOL    bFind = FALSE;
    CString strKeyword = "keyword";
    CString strtemp;
    for(int i=0; i < m_list.GetItemCount(); ++i)
    {
    m_list.GetItemText(i, 0, strtemp);
    if(strtemp != strKeyword )
    continue;
    else
    {
    strtemp.Format("关键字在第%d行", i+1);
    AfxMessageBox(strtemp);
    bFind = TRUE;
    break;
    }
    }

    if(!bFind)
    {
                  m_list.InsertItem(m_list.GetItemCount(), strKeyword ); }