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); } CStringxuehaoStr=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;}