我利用以下代码在CListCtrl列表项中查找该项目:LVFINDINFO info;
info.flags=LVFI_PARTIAL|LVFI_STRING;
info.psz=strFindItem;
while((index=m_LcForMeetingUser.FindItem(&info)) != -1)
{
   m_LcForMeetingUser.DeleteItem(index);
}
一般情况下 我可以找到该项并能正确删除  但是  我现在遇到这种情况就是 如果在列表项中有两个选项 比如说 名称为:“线程”、“线程处理”这两个列表项  当我想删除名称为线程列表项的时候就不能正确删除 ,有时候正确删除 有时候就删除了线程处理列表项    我想是那个查找的字符窜有问题  我怎么设置让他必须全部匹配才返回index啊 ? 谢谢大家  急等啊 

解决方案 »

  1.   

    FindItem返回后自己再判断一下。
      

  2.   

    你们说的方法在理论上虽然可行  但是在实践中却比较难处理     FindItem得到index之后 判断 如果和我要找的不相同的话,在重新找很容易进入死循环  我简单测试了下  就没有测试了
    不过我找到了另外一种方法解决了:
    int n=m_LcForMeetingUser.GetItemCount();
    for (int i=0;i<n;i++)
    {
       CString strTextm_LcForMeetingUser.GetItemText(i,0);
       if(strcmp(strText,sNick) == 0 )
       {
          (* mcuit).pWindows->m_LcForMeetingUser.DeleteItem(i);
          break;
       }
    }  
    这样就不会出现那种问题了不过还是谢谢你们了 哎  自己还是没有好好思考....结贴   
      

  3.   

    LVFI_PARTIAL 的意思就是部分匹配即可,要完全匹配的话去掉这个LVFI_PARTIAL标记。
      

  4.   

    LVFINDINFO info; 
    info.flags=LVFI_PARTIAL|LVFI_STRING; 
    info.psz=strFindItem; 
    while((index=m_LcForMeetingUser.FindItem(&info)) != -1) 

      m_LcForMeetingUser.DeleteItem(index); 
    } 直接将info.flags=LVFI_PARTIAL|LVFI_STRING; 
    改为info.flags=LVFI_STRING; 
      

  5.   

    哦.............谢谢大家
    the item text of the matching item must exactly match the string pointed to by the psz member.哎当初怎么就没有看到呢.....