MFC列表控制元件CListCtrl使用方法示範
阿新 • • 發佈:2020-07-30
CListCtrl 獲取選中的某一行
POSITION ps = m_list.GetFirstSelectedItemPosition(); int nSel = m_list.GetNextSelectedItem(ps);//選中的哪行的索引(based 0) // 或 if(m_list.GetSelectedCount() <1) return; int nSel = m_list.GetSelectionMark();
CListCtrl控制元件失去焦點時仍保持高亮
1. 標頭檔案中新增變數m_nSelItem
int m_nSelItem;
2. 為ListCtrl控制元件新增NM_KILLFOCUS(失去焦點)和NM_SETFOCUS(得到焦點)訊息
手動新增程式碼如下:
標頭檔案中新增宣告
afx_msg void OnNMKillfocusList(NMHDR *pNMHDR,LRESULT *pResult);
afx_msg void OnNMSetfocusList(NMHDR *pNMHDR,LRESULT *pResult);
原始檔中新增對映
ON_NOTIFY(NM_KILLFOCUS,IDC_LISTCTRL,OnNMKillfocusList)
ON_NOTIFY(NM_SETFOCUS,OnNMSetfocusList)
原始檔中新增函式
void CPageListView::OnNMKillfocusList(NMHDR *pNMHDR,LRESULT *pResult) { // TODO: 在此新增控制元件通知處理程式程式碼 m_nSelItem = m_ListCtrl.GetSelectionMark(); m_ListCtrl.SetItemState(m_nSelItem,LVIS_DROPHILITED,LVIS_DROPHILITED); *pResult = 0; } void CPageListView::OnNMSetfocusList(NMHDR *pNMHDR,LRESULT *pResult) { // TODO: 在此新增控制元件通知處理程式程式碼 m_ListCtrl.SetItemState(m_nSelItem,FALSE,LVIF_STATE); *pResult = 0; }
注意:Always Show Selection屬性一定要設為FALSE
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。