1. 程式人生 > 程式設計 >MFC列表控制元件CListCtrl使用方法示範

MFC列表控制元件CListCtrl使用方法示範

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。