我想用ListCtrl控件做一个列表,但我不知怎样才能定位ListCtrl上的记录位置。
比如在ListCtrl上有100条记录每个记录的格式是
标头
No. txt1 txt2 txt3
数据
0    a0   b0   c0
1    a1   b1   c1
我想查找记录a1在哪行,并将光标定位在这行上(就象点击此行一样)。
请问怎样做才能做到?
我是一个VC初学者,请各位说的详细些。
我保证答者有分。
Up我也欢迎

解决方案 »

  1.   

    先排序,然后查找....
    http://www.codeguru.com/listview/index.shtml
    有你要的所有内容..OK.
    光标定位用
    YourList.SetItemState(YourFindIndex, LVIS_SELECTED, LVIS_SELECTED);
    YourList.SetFocus();
      

  2.   

    谢谢zhang1000我的问题基本解决了,但你能不能再告诉我一下。
    我现在虽然可以定位行,但是它的光标(滚动条)却不动,用什么方法能做到呀。
    就是说可不可以像我在ListCtrl上按向下键时那样滚动
      

  3.   

    谢谢zhang1000我的问题基本解决了,但你能不能再告诉我一下。
    我现在虽然可以定位行,但是它的光标(滚动条)却不动,用什么方法能做到呀。
    就是说可不可以像我在ListCtrl上按向下键时那样滚动
      

  4.   

    CString l_buff;
     l_buff="a1";
     int nItem=FindItems(1,l_buff);
     char buff[20];
     lstrcpy(buff,l_buff);
     
     LVITEM pitem;
     if(nItem!=-1)
     {
       pitem.mask=LVIF_STATE|LVIF_TEXT|LVIF_IMAGE;
       pitem.iItem=nItem;
       pitem.stateMask=LVIS_SELECTED;
       pitem.state=LVIS_SELECTED;//
       pitem.iSubItem=0;
       pitem.iImage=0;//如果没有设置图像列表此值可忽略
       pitem.pszText=buff;
       m_work.SetItem(&pitem);//m_work为指向工程中的CListCtrl控件的变量
    }int FindItems(int column, CString ne)//此函数查找你要找的内容在第几行
    {//column是CListCtrl中的列号;ne为要查找的内容,也可改为char型指针
       int count;
       int i;
       CString temp;
       count=m_work.GetItemCount();
       for(i=0;i<count;i++)
       { 
           temp=m_work.GetItemText(i,column);
           if(temp==ne)
       break;
       }
       if(i!=count)
      return i;
       else return -1;
    }