【发布时间】:2021-04-09 07:05:22
【问题描述】:
我正在使用 win32 api 创建一个应用程序,当我收到 WM_LBUTTONDOWN 消息时,我有一个布尔值 isLeftClickPressed 设置为 true。当我收到WM_LBUTTONUP 消息时,我将其设置为 false。这很好用,但是如果我按住鼠标左键并将光标移出窗口并释放鼠标,它永远不会发送WM_LBUTTONUP 消息。我不是在寻找解决此问题的方法,而只是想知道我的鼠标何时离开窗口,然后将 isLeftClickPressed 设置为 false。
任何帮助将不胜感激。
【问题讨论】:
-
你说你不想要它,但这不会让用户感到困惑,而且很容易做到:只需在按钮按下时调用SetCapture,在按钮向上时调用ReleaseCapture,然后即使光标离开窗口,您也会收到鼠标事件,直到按钮被释放。
-
@spectras 你是对的,但是如果我设置捕获,并走出窗口,我的鼠标坐标将变为负数。是否可以只捕获鼠标点击?
-
是的,或者您也可以简单地测试坐标是否为负数并在这种情况下忽略移动事件。这完全取决于你,我只是想提一下,所以你知道这很容易做到。因此,您可以根据最适合您的应用程序而不是看起来更容易实现的解决方案来选择您的解决方案:)