MFC CListCtrl实现双击编辑

本文介绍了如何在MFC中为CListCtrl控件添加NM_DBLCLK消息映射,以实现在列表控件中双击时进行编辑的功能。同时,还提供了设置行高的方法,通过创建CImageList并设定行高参数,然后将其应用到CListCtrl的缩略图列表样式。
摘要由CSDN通过智能技术生成

添加CListCtrl控件的NM_DBLCLK(鼠标左键双击)消息映射

OnNMDblclkList(NMHDR *pNMHDR, LRESULT *pResult)
{
   
    NM_LISTVIEW *pNMListCtrl = (NM_LISTVIEW *)pNMHDR; //该变量是个结构体指针,该结构体中存放着双击的行号(iItem),以及列号(iSubItem),当未选中时返回-1
    //找了一些网上的一些教程,当表没有插入数据时,也能响应解析行号列号,试了下我这边不行,原因未知
    //所以我这里想要双击解析行号列号,必须要提前插入行列,可以插空字符
    
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以通过以下步骤实现: 1. 在 CListCtrl 的创建时设置 LVS_EDITLABELS 样式,这个样式可以让用户双击列表项时编辑文本。 2. 在 CListCtrl 的 OnDblClick() 函数中处理双击事件,可以使用 EditLabel() 函数让当前选中的列表项变为可编辑状态。 3. 在 CListCtrl 的 OnEndLabelEdit() 函数中处理编辑完成事件,可以获取用户输入的文本,并更新列表项的文本内容。 下面是一个示例代码: ``` // 创建列表控件 CRect rect(10, 10, 300, 200); DWORD dwStyle = WS_VISIBLE | WS_BORDER | LVS_REPORT | LVS_EDITLABELS; m_listCtrl.Create(dwStyle, rect, this, IDC_LIST_CTRL); // 设置列表控件的列头 m_listCtrl.InsertColumn(0, _T("姓名"), LVCFMT_LEFT, 100); m_listCtrl.InsertColumn(1, _T("年龄"), LVCFMT_LEFT, 100); // 在列表控件的 OnDblClick 函数中处理双击事件 void CMyDialog::OnDblClickListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { NMITEMACTIVATE* pActivate = (NMITEMACTIVATE*)pNMHDR; if (pActivate->iItem >= 0 && pActivate->iSubItem >= 0) { // 使用 EditLabel 函数让当前选中的列表项变为可编辑状态 m_listCtrl.EditLabel(pActivate->iItem); } *pResult = 0; } // 在列表控件的 OnEndLabelEdit 函数中处理编辑完成事件 void CMyDialog::OnEndLabelEditListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { LVITEM lvItem = { 0 }; lvItem.mask = LVIF_TEXT; lvItem.iItem = ((NMLVDISPINFO*)pNMHDR)->item.iItem; lvItem.iSubItem = ((NMLVDISPINFO*)pNMHDR)->item.iSubItem; lvItem.pszText = ((NMLVDISPINFO*)pNMHDR)->item.pszText; // 获取用户输入的文本,并更新列表项的文本内容 m_listCtrl.SetItem(&lvItem); *pResult = 0; } ``` 在上面的代码中,CMyDialog 是一个对话框类,m_listCtrl 是一个 CListCtrl 成员变量,OnDblClickListCtrl() 和 OnEndLabelEditListCtrl() 是列表控件的消息响应函数。你可以将这些代码添加到你的 MFC 应用程序中,并根据需要进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值