今、私は、ウィンドウの位置をリセットするためのアプリを開発しています。 注意すべき点は、グローバルマウスフックを使用してデスクトップマウスイベントを聞くことでした。 グローバルマウスフックがうまく機能しています。 私の問題は、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