2
我遇到了一个烦人的问题。当鼠标指针位于我的主窗口上并显示拥有弹出窗口(请参阅下面的示例)或不可见时,即使鼠标未移动,每次都会生成一个WM_MOUSEMOVE
消息。由于几个原因,在我的情况下是不能容忍的。弹出窗口显示/隐藏后防止生成WM_MOUSEMOVE
hWnd = CreateWindowEx(0, wcx.lpszClassName, L"Demo", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, nullptr, 0, hInstance, nullptr);
HWND hWndPopupTest = CreateWindowEx(WS_EX_NOACTIVATE | WS_EX_TOPMOST, L"Static", L"DemoPopup", WS_POPUP | WS_VISIBLE, 10, 10, 100, 100, hWnd, 0, hInstance, nullptr);
ShowWindow(hWnd, SW_SHOW);
ShowWindow(hWndPopup, SW_SHOWNOACTIVATE);
Sleep(1000);
ShowWindow(hWndPopup, SW_HIDE);
调用ReleaseCapture
时会发生同样的情况。这是可以禁用的功能吗?这是一个已知的“问题”还是有解决方法?
编辑:肮脏的解决方法
在如果从去年WM_MOUSEMOVE
鼠标的位置已经改变(主)窗口过程,我们可以测试。如果位置没有改变,那一定是因为一个弹出窗口被显示/隐藏或者一些窗口捕获被释放。
它不能被禁用。实际上重要的是,它确保光标形状是正确的。你必须解决它。 –
这种行为记录在某个地方吗? – bkausbk
[为什么我得到虚假的WM_MOUSEMOVE消息?](https://blogs.msdn.microsoft.com/oldnewthing/20031001-00/?p=42343),[当然,我可以得到虚假的WM_MOUSEMOVE消息,但为什么他们(https://blogs.msdn.microsoft.com/oldnewthing/20090617-00/?p=17863),以及[为什么每当Resource Manager运行时都会收到虚假的WM_MOUSEMOVE消息?](https: //blogs.msdn.microsoft.com/oldnewthing/20160616-00/?p=93685)。 – IInspectable