如何检查鼠标是否超过某个HWND?我已经尝试使用WM_MOUSELEAVE和WM_MOUSEMOVE消息来跟踪,但是如果你单击一个按钮并将鼠标拖出按钮,它就不会收到WM_MOUSELEAVE,直到鼠标被释放为止,这太晚了,因为:
单击按钮时,仅在以下情况下发送WM_COMMAND消息:
1.鼠标最初被压在按钮上
2.鼠标悬停在按钮上
3.鼠标通过按钮
我需要复制此功能。
答案 0 :(得分:3)
要复制此功能,只需调用SetCapture()
即可将鼠标消息发送到您的窗口,即使鼠标离开也是如此。您可以在移动时读取当前鼠标位置并确定它是否仍然在您的窗口/按钮上(我仍然不能100%确定您在做什么)。并且,当释放鼠标按钮时,您可以调用ReleaseCapture()
来恢复发送鼠标消息的位置。
编辑:哦,您可以使用Windows API函数WindowFromPoint()
来确定鼠标所在的窗口。
答案 1 :(得分:2)
这是Windows内置的,它被称为'鼠标捕获',SetCapture(hWnd)。即使鼠标移出窗口,它也可以确保您收到鼠标消息。您可以在WM_LBUTTONDOWN消息通知上调用它。