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