gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:23:17 29 4
gpt4 key购买 nike

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

如何检测鼠标何时位于标题栏的特定区域?

这是使用 Visual C++ 2010。

更新:

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

更新2:

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

最佳答案

我不是很确定你的意思,但我想你是说你想检查字幕栏的某个部分是否被鼠标悬停。如果是这样,那么也许可以尝试跟踪窗口大小和位置,然后检查相对于您的窗口位置和大小,栏的该部分是否会被鼠标悬停(以像素为单位)。这是我能想到的唯一不使用操作系统特定功能的方法,我尽力避免这种情况。

关于c++ - 如何在 C++ Win32 中捕获鼠标在标题栏上的移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20684665/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com