如何扑捉到WM_NCLBUTTONUP(OnNcLButtonUp)消息

在win32上实现响应WM_NCLBUTTONUP 重写WM_NCHITTEST消息,在WM_NCLBUTTONUP在win32上实现响应 阅读详情

      在点击标题栏,一直获取不到WM_NCLBUTTONUP消息。查了一下MSDN,说是当在非客户区点击鼠标时,窗口可以截获WM_NCLBUTTONDOWN,然后可以截获WM_ENTERSIZE消息,然后该窗口就被SetCapture(不再产生非客户区的消息了;同时所有的鼠标消息,即便鼠标不在这个窗口上的操作,也被传到这个窗口的窗口函数来处理。我一直没有搞清楚后面一条的应用场景),然后进入moving or sizing modal loop了, 这个时候,当前窗口就收不到任何的鼠标操作消息了,一直到鼠标左键松开为止。左键松开的时候,发的也是WM_LBUTTONUP消息,而且该消息也不能被窗口截获。因为还没有退出moving or sizing modal loop。一直到WM_LBUTTONUP之后,再有一个WM_EXITSIZEMOVE消息,才标志着正式退出了moving or sizing modal loop,又回到了主窗口的消息循环。WM_EXITSIZEMOVE消息也是可以被主窗口截获的,所以可以在这个消息的时候适当做一些工作,扑捉到WM_NCLBUTTONUP消息。

 

主要思路就是在窗口类中定义一个变量m_bNCLBDOWN,当检测到WM_NCLBUTTONDOWN消息时,该变量置true

void CRedcolorDlg::OnNcLButtonDown(UINT nHitTest, CPoint point)
{
 // TODO: Add your message handler code here and/or call default
 m_bNCLBDOWN = TRUE;  //树标志
 
 CDialog::OnNcLButtonDown(nHitTest, point);
}

然后在检测到WM_EXITSIZEMOVE消息时(表示已经释放鼠标左键了,系统要退出moving or sizing modal loop),模拟发送一个WM_NCLBUTTONUP消息给主窗口即可,同时倒掉m_bNCLBDOWN,以备下次使用。

LRESULT CRedcolorDlg::OnExitSize(WPARAM, LPARAM)
{

 if(m_bNCLBDOWN)
 {
 PostMessage(WM_NCLBUTTONUP,0,0);
 m_bNCLBDOWN = FALSE;   // 倒掉

 }
 return 0;
}

在VC中需要手工添加对消息WM_EXITSIZEMOVE的映射关系。

ON_MESSAGE(WM_EXITSIZEMOVE,OnExitSize)

然后,你就可以在WM_NCLBUTTONUP的消息映射函数中做各种工作了,这种方法应该是最简单的了。

 

 

IoU的进化之路——IoU、GIoU、DIoU、CIoU四种损失函数总结 IoU、GIoU、DIoU、CIoU四种损失函数总结 阅读详情

相关推荐

星空组网 vs 蒲公英 vs Tailscale:2024年国内免费异地组网工具横评(含实测数据)

本文对2024年国内主流免费异地组网工具星空组网、蒲公英和Tailscale进行了深度横向评测。基于实测数据,重点分析了三者在P2P成功率、中继延迟、传输速度及稳定性方面的表现,为中小企业、远程办公及个人开发者提供了清晰的选择指南。星空组网在国内网络环境下展现出优秀的平衡性。

weixin_29217235的博客 1437

关于WM_NCLBUTTONUP消息

今天写代码时想要响应

wwkaven的专栏 3479

PADS VX 蛇形走线的设置方法与绕制

在PCB设计过程中,在等长的设置中是必须用到蛇形走线的,并且DDR模块也会经常使用到。因此掌握蛇形走线的设置方法对我们PCB高速板设计中有很大的帮助。下面介绍蛇形走线的设置方法与绕制。1.单根网络线的蛇形走线的设置:打开PADS router界面,点击“工具”→“选项”(快捷方式“Ctrl+Enter”),弹出“选项”窗口,选择“布线”界面下的“调整”,在“调整”界面,设置蛇形走线,倒角比例可以灵活设置。操作如下图所示:完成蛇形走线的配置后,快捷方式“F3”进行交互式布线时,单击右键选择“添加蛇形走线”,便

tianpu2320959696的博客 3385

WM_NCLBUTTONUP不正常响应

当在非客户区点击鼠标左键并释放时,系统会发送窗口的WM_LBUTTONUP(注意不是WM_NCLBUTTONUP,这是客户区的鼠标释放消息,但是我们现在在非客户区释放鼠标!如之奈何)消息到线程的消息队列,但线程的消息队列压根就不把这个消息发送给这个窗口的窗口过程!解决办法如下:1.       响应非客户区鼠标按下的消息WM_NCLBUTTONDOWN, 定义一个flag, m_bNCLButto

MFCJCK的专栏 2055

SCI一区论文投稿终极技巧:Expert Systems With Applications;Knowledge-Based Systems

投稿计算机1区论文(如KBS、ESWA)的核心技巧包括:1)关键词选择需平衡范围与相关性,避免过细或过泛;2)研究内容聚焦单一核心创新点,避免内容分散;3)必须设计消融实验量化创新点的贡献;4)公开实验代码和数据集,确保可验证性;5)合理使用AI工具仅辅助写作,核心内容需自主完成;6)实验数据必须真实可靠。特别强调1区期刊对创新性和实验严谨性的高要求,需避免常见拒稿原因如内容分散、缺乏验证等。这些策略可提高投稿成功率,但前提是研究本身具有实质性创新。

ZhangJiqun&191cm&85kg 1151

全面指南:PyTorch与ROCm版本兼容性及多版本环境管理

本文详细介绍了在AMD GPU上配置PyTorch开发环境的完整流程,重点解决版本兼容性和多版本ROCm环境管理问题。主要内容包括:1) PyTorch与ROCm版本对应关系查询;2) 四种查看ROCm版本的方法;3) 使用update-alternatives管理多版本ROCm;4) 环境变量配置与冲突解决方案;5) 完整的验证流程和性能测试方法。文章提供了最佳实践建议和故障排除清单,帮助开发者快速搭建稳定高效的深度学习开发环境,充分发挥AMD GPU硬件性能。通过系统化的验证流程确保各组件协同工作,解决

数字人生 606

MFC中的消息

1.鼠标左键释放时没有响应WM_NCLBUTTONUP 消息? 在鼠标左键单击窗体的非客户区时,OnNcLButtonUp 函数未响应,原因是当DLG收到WM_NCLBUTTONDOWN后, 缺省的DefWindowProc会发送WM_SYSCOMMAND, 然后在处理WM_SYSCOMMAND时, 还会有一些消息被发送并处理,WM_NCLBUTTONUP不会被收到, 所以在WM_SY...

weixin_43791013的博客 321

YOLO26改进策略【卷积层】| CVPR 2025 频率动态卷积 FDConv 频域分权重提多样性 + 双调制降冗余,增强特征表征能力

本文记录的是利用FDConv 算子改进 YOLOv11 的卷积层特征提取层。(Frequency Dynamic Convolution)通过傅里叶域权重划分与空间-频率双调制机制结合,实现YOLOv11特征提取中频率多样化的动态卷积与空间自适应的频带调制。本文利用算子,通过傅里叶不相交权重生成频率差异化的并行卷积核以丰富特征表达,再通过核空间调制和频带调制结合局部-全局信息、适配图像空间异构性,同时依托固定参数预算实现轻量化设计,对YOLOv11中目标的低频语义特征与高频细节/边界特征进行针对性增强、抑制

Limiiiing的博客 476

关于WM_NCLBUTTONUP

The WM_NCLBUTTONUP message is posted when the user releases the left mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the curs

Sanbrother的专栏 2219

ArduPilot简介

一,什么是ArduPilot? ArduPilot是一个可信的,多用途的,开源的自动驾驶系统。该系统支持了非常多的交通工具类型,包括多旋翼无人机,传统直升机,固定翼飞行器,船,潜艇,巡逻车等。源码由大型开发者社区的专家和爱好者共同开发和维护。也欢迎更多的开发者加入源码的迭代演进,最好的“打开”方式就是加入开发者团队论坛。该论坛对所有人开放,在这里可以深入感受到开发者们对ArduPilot的热爱。 论坛链接:ArduPilot Discourse 开发者指南:Welcome to the ArduPil

从0到1,突破自己 5450

【人工智能】Claude Code 安装、配置及问题排查完整指南

建议使用IDE来启动 Claude,执行后,内容如下。(确保环境可正常运行 npm 命令)。

奶爸的编程之路,也就一周冷个三天 1206

bug分享 - 收不到WM_NCLBUTTONUP消息

重载windows的ncarea来自绘窗口标题栏是条死路(在Vista系统上,如果主题带有毛玻璃效果,那么无论你的窗口标题栏如何自绘,都会把系统的标题栏覆盖在自绘的标题栏上),因此自绘标题栏的唯一办法就是在客户区模拟非客户区,"伪造"实现标题栏的功能。我的这篇文章有些误人。这篇文章的目的只是为了讲述以前曾经遇到的一个问题。NCLBUTTONUP表示non-client left butto

5212

Dify 第 2 篇 Dify 插件离线安装

Dify是一个支持插件扩展的AI平台,其插件市场提供5种类型插件(模型、工具、Agent策略、扩展、插件包)。由于默认pip安装速度慢,可通过dify-plugin-repackaging工具将插件转换为离线包(使用阿里云镜像加速)。该工具提供两种方式:1)自备Python环境执行脚本;2)使用Docker环境(推荐)。脚本支持从Dify市场或GitHub下载插件,并重新打包为含依赖的离线包,便于通过"本地插件"方式快速安装。

甘蓝的专栏 1258

关于OnNcLButtonUp不能响应消息的问题

      我使用了OnNcLButtonDown可以响应消息,之后使用OnNcLButtonUp却不能响应单击消息,但双击能响应。      网上找了些资料,说因为窗口管理器在处理 OnNcLButtonDown 的时候捕捉了鼠标焦点,即使用了 SetCapture 函数,在捕捉了鼠标焦点后,窗口就不会发送 WM_NCLBUTTONUP 消息而会发送 WM_LBUTTONUP 消息。  

yowen的专栏 3408

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

一个解决OnNcLButtonUp不能响应消息问题的更好办法

这几天在写重绘对话框程序,发现好多例子中都是用OnNcLButtonDown来处理系统按钮按下消息,而不是常规的ButtonUp。这样很不爽,鼠标只要一点击按钮,窗口就直接最小化或关闭,这样不符合通常的操作习惯。(通常的Windows应用程序在鼠标键弹起时,才处理事件。)        当我写程序的时候,才发现,windows不能直接响应OnNcLButtonUp,难怪大家都把事件处理放到OnN

游蓝海 的专栏 4532

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

关于onnclbuttonup

from  http://www.programfan.com/club/showtxt.asp?id=111269"对于这个问题~我已经解决了~谢谢大家的解答~其实在WM_NCLBUTTONUP这个里面他是在左键点击客户区然后再在非客户区释放时响应此消息~所以才会脱动着窗口到左键释放时没此触发消息...."

凤凰木 1087

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MFC设计或实现之漏洞

<br />一.<br />我使用了OnNcLButtonDown可以响应消息,之后使用OnNcLButtonUp却不能响应单击消息,但双击能响应。<br />因为窗口管理器在处理 OnNcLButtonDown 的时候捕捉了鼠标焦点,即使用了 SetCapture 函数,在捕捉了鼠标焦点后,窗口就不会发送 WM_NCLBUTTONUP 消息而会发送 WM_LBUTTONUP 消息。<br /><br />解决办法:<br />在你的CXXDialog中的消息处理函数OnSysCommand()(对WM_S

hlfkyo的专栏 1105

MFC-为问号按钮添加点击消息响应函数

     这两天由于项目需要,调查了一个带问号按钮的对话框,花了一天半时间,原因是开始走错了路。大家一般知道的是点击了那个问号按钮后,鼠标会带一个问号,然后单击对话框上的某一个控件,就会显示相关的帮助文字信息。而我们的小日本客户偏偏很怪,要求点击问号按钮后弹出帮助文档,那么只有想办法了。      关键是要找到点击问号按钮产生的消息。为了这个问题,我调查错了方向,结果多花了一天时间。我先是查点问号

amdxp20085的专栏 2410

MFC学习之第二天

问题1:         为什么我的对话框类CTestDlig

anyeff的专栏 584

关于采用默认方式处理WM_NCLBUTTONDOWN消息而“无法”产生WM_NCLBUTTONUP消息的问题

问题产生:打算自己绘制标题栏,去掉有了系统才当,就剩下了一个光秃秃的标题栏,在完成

2279

DefWindowProc阻塞问题的解法

Windows平台窗口消息阻塞问题的研究

MysteryWorldGod的博客 1176

Windows消息机制

Windows消息机制

zhangchuan7758的博客 1462

关于在标题栏不触发WM_NCLBUTTONUP事件的替代方法(C#)

由于在 标题栏不触发WM_NCLBUTTONUP事件,网上找了很久,都不知什么原因,希望知道的同志告之小弟。现在我是用WM_NCMOUSEMOVE代替,由于在标题栏会触发WM_NCLBUTTONDOWN事件,所以在WM_NCLBUTTONDOWN事件里设置被按下的变量 b_MouseDown ,然后在WM_NCMOUSEMOVE 事件里检查 b_MouseDown ,具体如下: 

Luozhihui1102的专栏 1374

Windows平台Qt无边款窗口技术细节

Windows平台Qt无边框保留系统移动、缩放特效的设计细节,并提供Win11最大化按钮弹出snap layout的设计方案。

eiilpux17的博客 4642
上一篇: 有关DLL的几个问题
下一篇: Windows内存结构 .
SONG_CA
博客等级 码龄24年 74粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值