Я хочу разрешить пользователю перетаскивать мое окно Win32 только внутри рабочей области рабочего стола. Другими словами, они не должны иметь возможности вытягивать какую-либо часть окна за пределы монитора (ов), и при этом окно не должно перекрывать панель задач.
Я бы хотел сделать это таким образом, чтобы вызвать заикание. Обработка сообщений WM_MOVE и вызов MoveWindow () для изменения положения окна, если оно закрывается, работает, но мне не нравится эффект мерцания, вызванный MoveWindow ().
Я также попытался обработать WM_MOVING, который предотвращает необходимость вызова MoveWindow () путем изменения прямоугольника назначения до того, как на самом деле произойдет перемещение. Это решает проблему мерцания, но другая проблема, с которой я сталкиваюсь, заключается в том, что курсор иногда удаляется от окна, когда происходит перетаскивание, позволяя пользователю перетаскивать окно, когда курсор даже не находится внутри окна.
Как мне ограничить окно, не сталкиваясь с этими проблемами?