服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - MFC列表控件CListCtrl使用方法示范

MFC列表控件CListCtrl使用方法示范

2021-09-18 15:48htj10 C/C++

这篇文章主要介绍了MFC列表控件CListCtrl使用方法示范,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

延伸 · 阅读

精彩推荐