如何擷取CListCtrl目前選中的行
方法一: 單選的情況下
GetNextItem(-1,LVIS_SELECTED);
方法二:單選的情況下
如果隻允許單選,隻需要調用成員函數GetSelectionMark()就可以擷取選中的行号,然後你再調用GetItemText()就可以擷取選中行的文本。
方法三: 可以多選的情況下
CString str;
POSITION pos=list.GetFirstSelectedItemPosition(); //pos選中的首行位置
if(pss==NULL)
AfxMessageBox(L"no item were selected!");
while(pos)//如果選擇多行
{
int nIdx=-1;
nIdx= list.GetNextSelectedItem(pos);
if(nIdx >=0&&nIdx
{
str =list.GetItemText(nIdx,0);
}
}
}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++//這樣就能擷取了--
}重載 CListCtrl 的OnNMClick()函數,
OnNMClickMylist(NMHDR *pNMHDR, LRESULT *pResult)
NMLISTVIEW* pMListView=(NMLISTVIEW*) pNMHDR;
int nIndex = pMListView->iItem;
Mylist是自己定義的 CListCtrl的名字,nIndex就是目前選中行号,你也可以定義為全局變量int nHotItem = m_clist.GetHoteItem();例子:
position pos = m_mylistctrl.getfirstselecteditemposition();
if (pos == null)
trace(_t("no items were selected!\n"));
while (pos)
int nitem = m_mylistctrl.getnextselecteditem(pos);
trace(_t("item %d was selected!\n"), nitem);
// you could do your own processing on nitem here
注意: 如果你在周遊的時候需要删除選中的項, 因為删除一項後全部選中項的索引位置都會改變. 的以需要把循環裡的getnextselecteditem修改成getfirstselecteditemposition即,總是去擷取第一個選中, 然後删除掉.
友情提示, 樓主應該多看msdn.這些在上面都有. 你隻需要搜尋clistctrl 然後檢視其成員就可以看到了.
CListCtrl的基本用法, 比如說是删除, 加入一項.
DeleteItem(nSel),第二個參數是列數,第三個參數用來儲存擷取到的資料(LPCTSTR)
配合SetItemText和DeleteItem使用(常用的一組)是GetFirstSelectedItemPosition(無實參,傳回值是int類型)
删除指定列是DeleteItem,參數是GetNextSelectedItem的傳回值
例'',傳回類型是POSITION)和GetNextSelectedItem(參數是上一個函數的傳回值插入新的一列是InsertColumn
實參:第一個參數是int類型的新插入的列的索引(int),第二個是這一列的标題(LPCTSTR),第三個是用于指定列的對齊方式(一般用0就行)第四個是列的寬度(以像素為機關)
擷取目前總行數(用于插入資料)的函數是GetItemCount
在指定列指定行插入資料是InsertItem
m_list ;
POSITION pos = m_list . GetFirstSelectedItemPosition();
int nSel = m_list . GetNextSelectedItem(pos):第一個參數是行數,第二個是要插入的資料(LPCTSTR)
設定指定列指定行項的文字是SetItemText
實參:第一個參數是行數插入一列
insertcolumn(0,//插入位置
_t("名稱"),//插入列名
lvcfmt_center,//該列風格
55//列寬度
);
insertitem(0,//插入位置
"audiodg.exe"//插入項字元串
);
删除一項:
deleteitem(n//項數
)