如何检查鼠标是否通过控件
-
12-10-2019 - |
题
一个人如何检查鼠标是否超过某个HWND?我已经尝试使用WM_Mouseleave和WM_MouseMove消息来保持跟踪,但是如果您单击一个按钮并将鼠标从按钮中拖出,它将不会接收WM_Mouseleave,直到释放鼠标为止,这为时已晚,因为:
单击按钮时,仅在以下方式时发送WM_COMMAND消息。
1.鼠标最初在按钮上沮丧
2.鼠标在按钮上
3.鼠标通过按钮释放
我需要复制此功能。
解决方案
要复制此功能,只需致电 SetCapture()
因此,即使鼠标离开它,鼠标消息也会发送到您的窗口。您可以在移动时读取当前的鼠标位置,并确定它是否仍在窗口/按钮上(我仍然不确定您在做什么)。而且,发布鼠标按钮时,您可以致电 ReleaseCapture()
恢复发送鼠标消息的位置。
编辑: 哦,您可以使用Windows API函数 WindowFromPoint()
确定鼠标结束的窗口。
其他提示
这是内置的Windows,称为“鼠标捕获”,SetCapture(HWND)。即使鼠标已移到窗口外,也可以确保您收到鼠标消息。您可以在WM_LBUTTONDOWN消息通知上调用它。
不隶属于 StackOverflow