子窗体不会触发WM_LBUTTONDOWN,只会触发WM_LBUTTONUP消息的原因

本文解决了子窗口无法响应WM_LBUTTONDOWN消息的问题,探讨了与父窗口处理WM_NCACTIVATE消息的关系,并提供了确保子窗口正常响应点击事件的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里感谢下https://blog.csdn.net/wyy1991990/article/details/19629831 文章的作者,要不是这篇文章,我简直要怀疑人生了。

子窗口无法响应WM_LBUTTONDOWN消息,但是响应WM_LBUTTONUP,原因是和父窗口处理WM_NCACTIVATE相关。

下面是另外一篇文章的关于这个消息的说明,不确定是否准确

当WM_NCACTIVATE消息的wParam参数为true 时表示窗体被激活,为false 时表示窗体改为未被激活的状态。这个时候消息处理过程的返回值,为true 表示允许激活其他的窗体,为false 表示不允许激活其他的窗体。

 另外msdn的链接在这里https://msdn.microsoft.com/en-us/ie/ms632633(v=vs.94)

对于win32窗口,如果不想让窗口闪烁时显示出来自带的边框,一般会选择自己过滤这个消息,该消息的返回值对于主窗口来说,一般返回1即可,也就是上面所说的,允许其他窗体(应该主要是他的子窗体)被激活。具体到duilib里面来讲,就是让bHandled为true,lRes为1即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值