Jetzt entwickle ich die App, um die Position des Fensters zurückzusetzen. Eine Sache zu beachten ist, dass ich den globalen Maus-Hook verwendet habe, um das Desktop-Maus-Ereignis zu hören. Global Maushaken funktioniert gut. Mein Problem ist, dass SetWindowPos() -Methode seltsam funktioniert. Das folgende ist mein Code:C++: Globale Maus haken und die Position des Fensters zurücksetzen
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;
Wenn ich die app bauen, geht das Fenster in der oberen linken Ecke des Desktops, aber plötzlich kommt es zurück in die ursprüngliche Position zurück.
Möchten Sie mir helfen, dieses Problem zu lösen?
Hey, Anders ich Frage mit Ihrer Antwort haben . Wenn Sie gesagt haben "Haben Sie versucht, CallNextHookEx vor SetwindowPos aufzurufen", können Sie mir mehr Details geben? –
Und eine weitere Sache zu injizieren ist, dass, wenn ich die SetWindowPos-Methode in WM_LBUTTONUP case, nicht in If case, es funktioniert gut. Möchten Sie erklären, warum das passiert? –
Ein Hook sollte normalerweise CallNextHookEx aufrufen, damit auch andere Hooks die Nachricht erhalten. Wenn ein anderer Haken auch etwas Ähnliches macht, würdest du nur "gewinnen", wenn du deine Aktion nach den anderen Haken ausgeführt hast. Wenn es nicht möglich ist, Ihre andere Frage zu beantworten, weil Sie nicht den gesamten Code gepostet haben. – Anders