5

如何检查鼠标是否在某个 HWND 上?我尝试使用 WM_MOUSELEAVE 和 WM_MOUSEMOVE 消息来跟踪,但是如果您单击按钮并将鼠标拖出按钮,则在释放鼠标之前它不会收到 WM_MOUSELEAVE,这为时已晚,因为:

当您单击按钮时,仅在以下情况下发送 WM_COMMAND 消息:
1. 鼠标最初在按钮上按下
2. 鼠标在按钮上
3. 鼠标在按钮上释放

我需要复制这个功能。

4

2 回答 2

5

要复制此功能,只需调用SetCapture()以便将鼠标消息发送到您的窗口,即使鼠标离开它。您可以在鼠标移动时读取当前鼠标位置,并确定它是否仍在您的窗口/按钮上方(我仍然不能 100% 确定您在做什么)。而且,当释放鼠标按钮时,您可以调用ReleaseCapture()以恢复鼠标消息的发送位置。

编辑:哦,您可以使用 Windows API 函数WindowFromPoint()来确定鼠标在哪个窗口上。

于 2010-12-21T00:32:56.867 回答
2

这是 Windows 内置的,称为“鼠标捕获”,SetCapture(hWnd)。即使鼠标移出窗口,它也能确保您收到鼠标消息。您在 WM_LBUTTONDOWN 消息通知上调用它。

于 2010-12-21T00:33:41.100 回答