CListCtrl使用小結

來源:互聯網
上載者:User

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;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.