0

当我在前台单击 win32 窗口的非反应区域(例如,菜单栏上的空白区域)并拖动鼠标时,后台窗口不会接收鼠标事件。按钮不会进入悬停状态,光标不会改变等。鼠标被前景窗口“捕获”,尽管它也不会接收消息,除非鼠标悬停在它上面。这种状态一直持续到我松开鼠标按钮。为什么会这样,我怎样才能在不释放鼠标按钮的情况下以编程方式摆脱这种状态?

研究这个问题,我一开始以为和鼠标捕获的概念有关,但现在看来不是。GetCapture() 在此状态下返回 NULL,无论它是什么。

澄清编辑:这在最简单的应用程序中很容易看到。使用默认项目模板在 Visual Studio 中创建一个新的 Win32 项目,这会产生一个空窗口。运行它,然后单击并按住窗口内的空白。将鼠标拖到窗口外,并注意背景窗口中的按钮不会亮起或以其他方式响应鼠标悬停事件。即使我在 WndProc 中粘贴 ReleaseCapture() 以便它在每条消息后触发,结果也是一样的。看起来这与 Get/SetCapture 意义上的鼠标捕获无关。

4

0 回答 0