winapi — C ++: глобальная мышь, перехват и сброс положения окна

Сейчас я разрабатываю приложение для сброса положения окна.
Стоит заметить, что я использовал глобальный хук мыши для прослушивания события мыши на рабочем столе.
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;

Когда я создаю приложение, окно переходит в верхний левый угол рабочего стола, но неожиданно оно возвращается в исходное положение.

Хотите помочь мне решить эту проблему?

-3

Решение

Перемещение / изменение размера окна вызывает DefWindowProc выполнить внутренний цикл перемещения или изменения размеров. Элемент управления не возвращается в приложение до тех пор, пока операция не будет завершена, а точное поведение и обработка сообщений не задокументированы.

Вы пробовали звонить CallNextHookEx до SetWindowPos?

Как взломать вы можете попытаться отложить ваш звонок на SetWindowPos пока не вернется ваш хук (оставьте сообщение для себя или используйте рабочую ветку).

Вы также можете попробовать использовать другой хук, чтобы поймать конец операции перемещения:

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]