请问兄弟们,自定义listctrl控件如何响应双击事件?

hy1001w 2010-10-06 01:22:10


先从工具箱拖一listctrl控件,
再自己继承个mylistctrl控件,创建时父控件是一个 静态static text 控件,代码按默认生成。
#pragma once
#include "afxcmn.h"

class CMyListCtrl :
public CListCtrl
{
public:
CMyListCtrl(void);
~CMyListCtrl(void);
};

按照从工具箱拖的那个控件,修改了3个地方,
1.头文件添加
afx_msg void OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnMyNMDblclkList(NMHDR *pNMHDR, LRESULT *pResult);

2.源文件添加
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
......

ON_NOTIFY(NM_DBLCLK, IDC_LIST1, &CMyDlg::OnNMDblclkList1)
ON_NOTIFY(NM_DBLCLK, IDC_MY_LISTCTRL, &CMyDlg::OnMyNMDblclkList)//已在资源中添加了IDC_MY_LISTCTRL

END_MESSAGE_MAP()

3.
void CMyDlg::OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult)
{....}
void CMyDlg::OnMyNMDblclkList(NMHDR *pNMHDR, LRESULT *pResult)
{....}

但是没反应,还需要修改哪些地方?

谢谢。
...全文
216 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
花熊 2010-10-06
  • 打赏
  • 举报
回复
创建时父控件是一个 静态static text 控件在这个静态控件中加上双击响应消息,再SendMessage到Dlg就OK了,
  • 打赏
  • 举报
回复
最近我也从一个叫HyperLink的类继承了一个自己的类CMyHyperLink,简单研究了下如何给自己的类添加鼠标单击事件,有这么两个地方就够了.
1.头文件里面
protected:
//{{AFX_MSG(CMyHyperLink)

//}}AFX_MSG
afx_msg void OnClicked();
DECLARE_MESSAGE_MAP()
这里,OnClicked()是双击响应的函数名
2.源文件里面
BEGIN_MESSAGE_MAP(CMyHyperLink, CHyperLink)
//{{AFX_MSG_MAP(CMyHyperLink)
ON_CONTROL_REFLECT(STN_CLICKED, OnClicked)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
这样,单击的消息映射就添加好了.楼主,最后在源文件里添加一个函数处理就行了.
void CMyHyperLink::OnClicked()
{
//Some code to process
}
楼主要求双击事件的话,还真不太清楚.不过,这样,我的CMyHyperLink类的单击功能就已经可以工作了.呵呵
明寿 2010-10-06
  • 打赏
  • 举报
回复
子类化不能这样整啊,楼主这个代码写的错误多多,能响应才怪,建议用类向导生成:

菜单->添加类->MFC->MFC类, 打开后选择CListCtrl为基类搞定。
然后再生成void CMyListCtrl::OnNMDblclk

给分太少了,自己看看源码MS是怎么玩消息映射的...
hztj2005 2010-10-06
  • 打赏
  • 举报
回复
自定义listctrl控件要有自己独立的信息循环:
BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl).....


ON_NOTIFY(NM_DBLCLK, IDC_MY_LISTCTRL, &CMyDlg::OnMyNMDblclkList
END_MESSAGE_MAP()

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧