繁体   English   中英

如何在C ++ Win32中捕获标题栏上的鼠标移动?

[英]How To Capture Mouse Movement Over Caption Bar In C++ Win32?

我有自己的自定义绘制标题栏的窗口。 我还在这个栏上画了一个位图,当有人用鼠标光标悬停在它上面时我想知道。 我已经处理了WM_NCMOUSEMOVE消息,但这似乎只是在边界而不是我的标题区域本身触发。

如何检测鼠标何时超过标题栏的某个区域?

这是使用Visual C ++ 2010。

更新:

我在一定程度上解决了这个问题。 我(特意)没有WS_CAPTION风格的窗口设置,而是我处理WM_NCCALCSIZE并手动调整非客户区的大小-在这种情况下,移下来了20个像素。 这意味着我“强制”作为非客户区域的区域不会获得WM_NCMOUSEMOVE消息,但也不会获得WM_MOUSEMOVE消息。 一种方法是强制WM_CAPTION样式,摆脱WM_NCCALCSIZE上的自定义代码,但这并不理想。 有没有办法围绕它?

UPDATE2:

WM_NCHITTEST消息也是同样的问题。 除非我设置了我不想要的WS_CAPTION样式,否则该区域不会触发这些。 它也以某种方式影响客户区,因为它不再获取WM_LBUTTONDOWN消息。

我不是很肯定你的意思,但我想你是说你要检查标题栏的某个部分是否被鼠标悬停。 如果是这样,那么可能尝试跟踪窗口大小和位置,然后检查相对于您的窗口位置和大小,是否将鼠标悬停(以像素为单位)。 这是我能想到的唯一不使用OS特定功能的方法,我尽量避免使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM