void CUsers::OnDeleteuser() 
{
int nItem;
POINT a;
nItem=m_list1.GetItemPosition(0,&a);
m_list1.DeleteItem(nItem);
}
这是我用来删除选中某一行的函数,但是不能删除第一行
举个例子:
1   yang    2
2   yang1   3
3   yang2   3
这是我listctrl控件中的的三行,我编译后只能删除2,3行,不能删除1行,诚不知其所然矣!望高手赐教!

解决方案 »

  1.   


    CListCtrl::GetItemPositionBOOL GetItemPosition(int nItem,LPPOINT lpPoint) const返回值:如果成功,则返回非零值,否则为0。参数: nItem 要获取位置的项的索引值。  
    lpPoint 在视图坐标中接受项左上角位置POINT结构的地址,按视图坐标。  说明:获取列表视图项的位置。这个函数压根不是这么用的
      

  2.   

    你的item赋值就不对,如果返回值为1的话,那么你永远从第一项(从0开始计算)开始删除。永远删除不到最开头的那项
      

  3.   

    那拜托提出解决方法,MSDN我也有
      

  4.   

    你的item赋值就不对,如果返回值为1的话,那么你永远从第一项(从0开始计算)开始删除。永远删除不到最开头的那项拜托你给我解决方法,我初学者!
      

  5.   

    下面是多个选项被选中,然后循环删除的POSITION pos = pList->GetFirstSelectedItemPosition();
    if (pos == NULL)
       TRACE0("No items were selected!\n");
    else
    {
       while (pos)
       {
          int nItem = pList->GetNextSelectedItem(pos);
          TRACE1("Item %d was selected!\n", nItem);
          m_list1.DeleteItem(pos);
       }
    }
      

  6.   

    POSITION pos = m_list1.GetFirstSelectedItemPosition();
    if (pos == NULL)
       TRACE0("No items were selected!\n");
    else
    {
       while (pos)
       {
          int nItem = m_list1.GetNextSelectedItem(pos);
          TRACE1("Item %d was selected!\n", nItem);
          m_list1.DeleteItem(pos);
       }
    }
      

  7.   

    9楼的代码中m_list1.DeleteItem(pos);要改成m_list1.DeleteItem(nItem);
    终于解决了
    非常感谢九楼的朋友,你是最可爱的人,我太爱你了,爱你一万年!
      

  8.   

    还是有问题
    POSITION pos = m_list1.GetFirstSelectedItemPosition();
    if (pos == NULL)
       TRACE0("No items were selected!\n");
    else
    {
       while (pos)
       {
          int nItem = m_list1.GetNextSelectedItem(pos);
          TRACE1("Item %d was selected!\n", nItem);
          m_list1.DeleteItem(nItem);//pos改成了nItem
       }
    }这样的代码不是说能删除多行吗?
    但我运行后对删除单行是没问题了
    对删除多行有问题,选定3行只删除2行,也就是会少删一行
    想你应该能解决
      

  9.   

    试试这样// ListCtrl多行删除
    POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition();
    while(pos)
    {
    int nItem = m_ListCtrl.GetNextSelectedItem(pos);
    m_ListCtrl.DeleteItem(nItem);
    pos = m_ListCtrl.GetFirstSelectedItemPosition();
    }
      

  10.   

    再问一个
    如果POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition();
    while(pos)
    {
        int nItem = m_ListCtrl.GetNextSelectedItem(pos);
        m_ListCtrl.DeleteItem(nItem);
        pos = m_ListCtrl.GetFirstSelectedItemPosition();
    }
    这段代码中加入代码实现listctrl中删除一行的同时,对应的数据库中的一行也被删除
    我连接数据库用的是MFC ODBC方式
    请赐教,谢谢!
      

  11.   


    //这个需要你自己写数据库操作语句,删除ListCtrl的item的同时,执行对应的数据库删除语句。
      

  12.   

    www.vckbase.com去搜索ODBC,先自己查资料在发贴求助。
      

  13.   

    这种人真恶心!->(www.vckbase.com去搜索ODBC,先自己查资料在发贴求助。)
      

  14.   

    你感觉你很恶心。人家好歹是3星的,是被认可的。你他妈一个20分的贴里弄几个问题,1楼的已经很帮助你了,帮助你是情分,不帮你是本分。你以为CSDN上的人有义务帮你写代码啊?什么叫授人以渔你懂不懂啊,白痴
      

  15.   

    22楼的我惹你了吗?第一次来CSDN就遇上你这种王八蛋,没事找抽型,我诅咒你全家死光,生小孩没屁眼,你这种人活着就是一种失败。