1 获得选中项的索引
POSITION pos=m_BanjiList.GetFirstSelectedItemPosition(); if(pos==NULL) { AfxMessageBox(L"未选择任何项"); return; }else{ int iIndex=m_BanjiList.GetNextSelectedItem(pos); CString Str1; CString Str2; Str1=m_BanjiList.GetItemText(iIndex,0); Str2=m_BanjiList.GetItemText(iIndex,1); }
2 NM_CLICK 单击事件中获得选中行信息
OnNMClickListWenti(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); // TODO: 在此添加控件通知处理程序代码 *pResult = 0; NM_LISTVIEW *info=(NM_LISTVIEW*)pNMHDR; int nIndex=info->iItem; //选中的行数 if (nIndex==-1) //未选中 则默认最后一个 { nIndex=m_BanjiList.GetItemCount()-1; if (nIndex==-1) //如果为-1,则说明 还未添加任何项目 return; else m_BanjiList.SetItemState(nIndex,LVIS_SELECTED,LVIS_SELECTED); } CString xuehaoStr=m_XueShengList.GetItemText(nIndex,0); //选中行的第一列的文字 }
3 选中某行
plistctrl->SetItemState(index,LVIS_SELECTED,LVIS_SELECTED);//选中一行 plistctrl->SetItemState(index,0,LVIS_SELECTED);//取消一行 DWORD style=plistctrl->GetItemState(index,LVIS_SELECTED);//获得选中信息
4 获得行数
List.GetItemCount();
获得某项第几列中的文字
CString str=List.GetItemText(nIndex,0); //第nIndex项(以0为基点) 第0列中的文字
5 获得列数
extern CListCtrl* pmyListCtrl; int nColumnCount = pmyListCtrl->GetHeaderCtrl()->GetItemCount(); // Delete all of the columns. for (int i=0;i < nColumnCount;i++) { pmyListCtrl->DeleteColumn(0); }
删除所有项,删除所有列
m_BanjiList.m_Header.m_HChar.clear(); //删除VECTOR 列标题
m_BanjiList.DeleteAllItems(); while(m_BanjiList.DeleteColumn(0)) { m_BanjiList.DeleteColumn(0); }
6 自绘时获得是否高亮等信息
是否高亮
LVITEM lvi = {0}; lvi.mask = LVIF_STATE;//|LVIF_IMAGE; lvi.stateMask = LVIS_FOCUSED | LVIS_SELECTED ; lvi.iItem = lpDIS->itemID; BOOL bGet = GetItem(&lvi); BOOL bHighlight =((lvi.state & LVIS_DROPHILITED)||((lvi.state & LVIS_SELECTED) && ((GetFocus() == this)|| (GetStyle() & LVS_SHOWSELALWAYS))));
是否单击
CRect rcBack = lpDIS->rcItem; pDC->SetBkMode(TRANSPARENT); if(this->GetItemState(lvi.iItem, CDIS_SELECTED)) //绘制选中行颜色,单击颜色。 { CRect itemBackRect; itemBackRect=rcBack; pDC->FillRect(itemBackRect, &CBrush(RGB(240,254,229))); itemBackRect.left += 1; itemBackRect.top += 2; itemBackRect.right -=1; itemBackRect.bottom -=2; pDC->FillRect(itemBackRect, &CBrush(RGB(191,225,128))); pDC->SetTextColor(RGB(0,0,0)); }
7 获得列名
LVCOLUMN lvColumn; TCHAR strChar[256]; lvColumn.pszText=strChar; lvColumn.cchTextMax=256 ; lvColumn.mask = LVCF_TEXT; GetColumn(0, &lvColumn); if(CString(lvColumn.pszText)!=_T("")) //如果首列有字,那么就不再绘制checkbox { return -1; }
本文使用 书画小说软件 发布,内容与软件无关,书画小说软件 更惬意的读、更舒心的写、更轻松的发布。