MFCリストコントロールCListCtrlの使い方の例


CList Ctrlは選択された行を取得します。

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_を追加します。nSelItemint m_nSelItem;2.ListCtrlコントロールにNM_を追加するKILLFOCUS(焦点を失う)とNM_SETFOCUSメッセージ
手動でコードを追加すると以下の通りです。
ヘッダファイルに宣言を追加
afx_msg void ONM Killfocus List(NMHDR*pNMHDR、LRESULT*pResoult);
afx_msg void ONMSetfocus List(NMHDR*pNMHDR、LRESULT*pResoult);
ソースファイルにマップを追加
ONするNOTIFY(NM_KILLFOCUS、IDC_LISTCTRL,ONMKillfocus List)
ONするNOTIFY(NM_SETFOCUS、IDC_LISTCTRL,ONMSetfocus List)
ソースファイルに関数を追加

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に設定してください。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。