如何获取CListCtrl当前选中的行

2024-11-02 07:21:29
推荐回答(5个)
回答1:

方法一: 单选的情况下
GetNextItem(-1,LVIS_SELECTED);
方法二:单选的情况下
如果只允许单选,只需要调用成员函数GetSelectionMark()就可以获取选中的行号,然后你再调用GetItemText()就可以获取选中行的文本。
方法三: 可以多选的情况下
CString str;
POSITION pos=list.GetFirstSelectedItemPosition(); //pos选中的首行位置
if(pss==NULL)
AfxMessageBox(L"no item were selected!");
else
{
while(pos) //如果选择多行
{
int nIdx=-1;
nIdx= list.GetNextSelectedItem(pos);

if(nIdx >=0&&nIdx {
str =list.GetItemText(nIdx,0);
}
}
}

回答2:

重载 CListCtrl 的OnNMClick()函数,
OnNMClickMylist(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLISTVIEW* pMListView=(NMLISTVIEW*) pNMHDR;
int nIndex = pMListView->iItem;
}
Mylist是自己定义的 CListCtrl的名字,nIndex就是当前选中行号,你也可以定义为全局变量

回答3:

GetCurSel() 这个是CCOMBOBOX里面的,
CString str;
POSITION pss=m_ListPage.GetFirstSelectedItemPosition();//pos就是行索引号,晕
int i=0;
if(pss==NULL)
AfxMessageBox("no item were selected!");
else
{
while(pss)//关键,如果你选择多行
{
int nIdx=-1;
nIdx = m_ListPage.GetNextSelectedItem(pss);//多少行--

if(nIdx >=0&&nIdx {
str = m_ListPage.GetItemText(nIdx,0);

}
i++//这样就能获取了--

}

回答4:

int nHotItem = m_clist.GetHoteItem();

回答5:

GetFirstSelectedItemPosition