-3
現在,我正在開發應用程序來重置窗口的位置。 需要注意的一件事是我使用全局鼠標鉤來收聽桌面鼠標事件。 Global Mouse掛鉤運行良好。 我的問題是SetWindowPos()方法奇怪地工作。 以下是我的代碼:C++:全局鼠標掛鉤並重置窗口的位置
case WM_LBUTTONUP:
mouselbut_clicked = false;
if (mousewnd_drag)
{
TRACE("mouse - lbutton release\n");
if (window_moved)
{
::SetWindowPos(hWnd, 0, 0, 0, 500, 500, SWP_ASYNCWINDOWPOS | SWP_NOZORDER);
window_moved = false;
}
}
break;
當我構建應用程序,窗口進入桌面的左上角,但突然,它回來到原來的位置。
你想幫我解決這個問題嗎?
嘿,安德斯 我有問題,你的答案。 當你說「你有沒有試過在SetwindowPos之前調用CallNextHookEx」,你能給我更多的細節嗎? –
還有一點需要注意的是,當我將SetWindowPos方法添加到WM_LBUTTONUP的情況下,而不是在If情況下,它運行良好。 你想解釋爲什麼會發生這種情況嗎? –
鉤子通常應該調用CallNextHookEx,以便其他鉤子也可以獲得消息。如果另一個鉤子也做了類似的事情,那麼如果你在其他鉤子之後執行了你的動作,那麼你只會「贏」。如果因爲尚未發佈所有代碼而無法回答您的其他問題。 – Anders