奇怪CLISTCTRL 没有响应NM_DBLCLK 双击但能响应单击和右键单双击

shinefen 2008-07-12 10:29:05
CLISTCTRL 没有响应NM_DBLCLK 双击但能响应单击和右键单双击

我都是通过属性框架直接添加控件响应事件的.

我颇难理解我三个列表中都是report模式,其中一个能响应双击事件~其余两个列表都响应不了双击~当然这时候我是没有生成单击事件的
ON_NOTIFY(NM_DBLCLK, IDC_LIST_LAIYUAN, &CJieGuoXianShi::OnNMDblclkListLaiyuan)//没响应
ON_NOTIFY(NM_DBLCLK, IDC_LIST_GEHAOLAIYUAN, &CJieGuoXianShi::OnNMDblclkListGehaolaiyuan)//有响应

为什么啊?又是BUG? 我已经重新生成过程序~
而且三个列表的设置都一样的,,,,,(难道我遗漏了什么?)

有碰过类似的情况吗? HELP!
...全文
365 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
shinefen 2008-07-23
  • 打赏
  • 举报
回复
...大家不好意思~是我的遗漏的错误,我忘记了在自己的CMYCTRLLIST上处理了双击,并改了些东西

~所以,,,之前才会出现以上的问题,
现在我知道了问题所在,问题就搞定了~

shinefen 2008-07-12
  • 打赏
  • 举报
回复
应该是说三个列表的右双击都能响应~ 但不明白左双击就不可以~ 我在尝试的时候这个列表是没有其他消息响应函数的了

当然,我在这个对话框中通过按钮互相切换他们显示的,都是先将其他两个列表SW_HIDE后再SW_SHOW要显示的列表(SW_SHOWDEFAULT都用过)

或许我知道了答案了~或许是因为我那两个列表都是用了自己派生的列表CMYListCtrl 而 能响应左双击的列表是直接用ClistCtrl的~

嘻嘻,,,但这又是为什么呢?
cnzdgs 2008-07-12
  • 打赏
  • 举报
回复
说错了,OnInitDialog中ShowWindow(SW_HIDE)是有作用的,会去掉控件的可见风格。
arong1234 2008-07-12
  • 打赏
  • 举报
回复
重叠起来只有Z order最靠前的收到消息
[Quote=引用 5 楼 shinefen 的回复:]
CJieGuoXianShi 为对话框类
三个CListCtrl都在这个对话框中~
都是在CJieGuoXianShi 的OnInitDialog()中
将三个列表
分别
CDialog::OnInitDialog();

Listjieguo.SubclassDlgItem(IDC_LIST_JIEGUO,this);
CRect rect;
Listjieguo.GetClientRect(rect);
Listjieguo.ShowWindow(SW_SHOWNORMAL);
Listlaiyuan.SubclassDlgItem(IDC_LIST_LAIYUAN,this);
Listlaiyuan.MoveWindow(rect);
Listlaiyuan.ShowWind…
[/Quote]
arong1234 2008-07-12
  • 打赏
  • 举报
回复
他这样用如果满足两个条件时没问题得
1. 函数原型对
2. CJieGuoXianShi是他父窗口所属类的继承链上的某个类型,也就是他父窗口类的基类
[Quote=引用 2 楼 jimoguilai 的回复:]
msdn的例子
ON_NOTIFY( LVN_KEYDOWN, IDC_LIST1, OnKeydownList1 )
[/Quote]
cnzdgs 2008-07-12
  • 打赏
  • 举报
回复
对。叠在一起只会有一个被点中。
另外,你应该在对话框资源中把控件设置为不可见,因为在OnInitDialog中ShowWindow(SW_HIDE)是不起作用的。
shinefen 2008-07-12
  • 打赏
  • 举报
回复
但问题是没解决的~很奇怪~那么为什么右键双击两个列表都能执行了呢?但左双击就不行?

shinefen 2008-07-12
  • 打赏
  • 举报
回复
CJieGuoXianShi 为对话框类
三个CListCtrl都在这个对话框中~
都是在CJieGuoXianShi 的OnInitDialog()中
将三个列表
分别
CDialog::OnInitDialog();

Listjieguo.SubclassDlgItem(IDC_LIST_JIEGUO,this);
CRect rect;
Listjieguo.GetClientRect(rect);
Listjieguo.ShowWindow(SW_SHOWNORMAL);
Listlaiyuan.SubclassDlgItem(IDC_LIST_LAIYUAN,this);
Listlaiyuan.MoveWindow(rect);
Listlaiyuan.ShowWindow(SW_HIDE);
ListGeHaoLaiyuan.SubclassDlgItem(IDC_LIST_GEHAOLAIYUAN,this);
ListGeHaoLaiyuan.MoveWindow(rect);
ListGeHaoLaiyuan.ShowWindow(SW_HIDE);

...

我现在明白了

可能我把他们都重叠在一起吧~
cnzdgs 2008-07-12
  • 打赏
  • 举报
回复
估计是父窗口不同。
你把三个ON_NOTIFY的代码都贴出来。
arong1234 2008-07-12
  • 打赏
  • 举报
回复
CJieGuoXianShi是两个listctrl得同一个parent窗口?
Chivalry 2008-07-12
  • 打赏
  • 举报
回复
msdn的例子
ON_NOTIFY( LVN_KEYDOWN, IDC_LIST1, OnKeydownList1 )
Chivalry 2008-07-12
  • 打赏
  • 举报
回复
&CJieGuoXianShi

需要这个么?

16,473

社区成员

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

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

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