获取CListCtrl选中行行号的多种方法

来源:互联网 发布:6寸windows平板 编辑:程序博客网 时间:2024/05/21 22:46

获取选中行的行号分为获取选中多行的行号和获取单行选中的行号。以下代码都经过测试没问题,涉及到一些函数请自行查询MSDN.

获取多行选中的行号:

方法一:

CString str;       for(int i=0; i<m_List.GetItemCount(); i++)       {            if( m_List.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED )            {                 str.Format(_T("选中了第%d行"), i);                AfxMessageBox(str);           }      }

方法二:

CString str; POSITION pos = m_List.GetFirstSelectedItemPosition();       if (pos == NULL)            TRACE0("No items were selected!/n");       else       {            while (pos)            {                 int nItem = m_List.GetNextSelectedItem(pos);                 TRACE1("Item %d was selected!/n", nItem);      str.Format(_T("选中了第%d行"), nItem);                AfxMessageBox(str);       }       }

获取单行选中行号的:

方法一:

CString str; int nIdx=m_List.GetSelectionMark();if (nIdx<0){AfxMessageBox(_T("没有选中任何行"));  } else{str.Format(_T("选中了第%d行"), nIdx);                AfxMessageBox(str);}

获取选中的行号和列号:

方法一:需要添加NM_CLICK消息的响应函数,也就是单击消息响应:

DWORD dwPos = GetMessagePos();            CPoint point( LOWORD(dwPos), HIWORD(dwPos) );              m_List.ScreenToClient(&point);              LVHITTESTINFO lvinfo;            lvinfo.pt = point;           lvinfo.flags = LVHT_ABOVE;                 int nItem = m_List.SubItemHitTest(&lvinfo);            if(nItem != -1)            {                 CString strtemp;                 strtemp.Format(_T("单击的是第%d行第%d列"), lvinfo.iItem, lvinfo.iSubItem);                AfxMessageBox(strtemp);           } 

方法二:

需要添加NM_CLICK消息的响应函数,也就是单击消息响应:

void Ctest111Dlg::OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult){LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);// TODO: 在此添加控件通知处理程序代码NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;            if(pNMListView->iItem != -1)           {                 CString strtemp;                 strtemp.Format(_T("单击的是第%d行第%d列"),                                 pNMListView->iItem, pNMListView->iSubItem);                 AfxMessageBox(strtemp);           }   *pResult = 0;}


0 0
原创粉丝点击