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

Rebecca ·
更新时间:2024-09-20
· 823 次阅读

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, IDC_LISTCTRL, 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

您可能感兴趣的文章:MFC实现对话框编辑控件上拖拽文件VS2010/MFC编程(常用控件:树形控件Tree Control控件创建h和实例)浅谈MFC 改变控件大小和位置C++ 关于MFC List Control 控件的总结C++中MFC Tab Control控件的使用详解MFC中动态创建控件以及事件响应实现方法MFC之ComboBox控件用法实例教程MFC控件之CListCtrl的应用实例教程



clistctrl 方法 mfc

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章