CListCtrl 获取选中的某一行
1
2
3
4
5
6
7
|
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, IDC_LISTCTRL, OnNMSetfocusList)
源文件中添加函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.cnblogs.com/htj10/p/11705231.html