Сейчас я разрабатываю приложение для сброса положения окна.
Стоит заметить, что я использовал глобальный хук мыши для прослушивания события мыши на рабочем столе.
Global Mouse Hook работает хорошо.
Моя проблема в том, что метод SetWindowPos () работает странно.
Вот мой код:
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;
Когда я создаю приложение, окно переходит в верхний левый угол рабочего стола, но неожиданно оно возвращается в исходное положение.
Хотите помочь мне решить эту проблему?
Перемещение / изменение размера окна вызывает DefWindowProc
выполнить внутренний цикл перемещения или изменения размеров. Элемент управления не возвращается в приложение до тех пор, пока операция не будет завершена, а точное поведение и обработка сообщений не задокументированы.
Вы пробовали звонить CallNextHookEx
до SetWindowPos
?
Как взломать вы можете попытаться отложить ваш звонок на SetWindowPos
пока не вернется ваш хук (оставьте сообщение для себя или используйте рабочую ветку).
Вы также можете попробовать использовать другой хук, чтобы поймать конец операции перемещения:
Других решений пока нет …