如何判断鼠标按钮是否在窗口外被释放?

3
通常情况下,当用户按住鼠标按钮并移开鼠标,然后释放按钮时,即使实际上释放发生在窗口外部,按钮也可以检测到鼠标已经释放。
当我检查窗口中的鼠标点击时,如何模拟相同的行为?
当鼠标按钮被按下窗口时,我会收到WM_XBUTTONDOWN消息,但Windows不会将其视为任何逻辑上的“点击”,因此在鼠标离开窗口后,窗口将不会再收到任何消息,导致“丢失”WM_XBUTTONUP消息。
3个回答

4
当你接收到按钮按下事件时,你要捕获鼠标。这意味着在释放捕获之前,所有的鼠标事件都将被报告给捕获了鼠标的窗口。
请查看此处的文档。该页面还提供了一个示例链接。


0
据我所了解,没有简单的方法可以确定鼠标是否在窗口外按下。因为所有与输入相关的消息都与当前窗口线程绑定。
但是有一种与点击鼠标无关但可以起到同样作用的替代方法。您可以捕获WM_ACTIVATEAPP消息,在您点击窗口外部时会被调用。根据文档中的说明,此消息将发送给当前应用程序窗口,该窗口将被停用,并且位于其上方级别的其他应用程序窗口将被激活。
请参阅https://learn.microsoft.com/en-us/windows/win32/winmsg/wm-activateapp以获取更多详细信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接