Как определить, является ли окно «закрепленным» на рабочем столе? - PullRequest
0 голосов
/ 24 мая 2019

Когда пользователь нажимает, например, Windows-RightArrow, размер окна изменяется на половину ширины монитора и на всю его высоту, а затем «пристыковывается» к правой половине монитора ( ref ).

Вопрос в том, возможно ли обнаружить либо находящееся в этом состоянии, либо находящееся в этом состоянии.

Obvioulsy, это может быть выведено из WM_WINDOWPOSCHANGING и связка, проверка по области монитора и что нет, но есть ли более чистое решение?

1 Ответ

0 голосов
/ 26 мая 2019

Для копирования из моего собственного комментария выше -

Похоже, что rcNormalPosition в WINDOWPLACEMENT сохраняет исходную (предварительно закрепленную) позицию окна.Таким образом, простое сравнение с эффективным прямоугольником окна покажет, находится ли окно в «особом» состоянии.Тогда нам просто нужно взглянуть на showCommand - если оно SW_SHOWNORMAL, то мы находимся в закрепленном состоянии.

Редактировать

После полевых испытанийПри таком подходе я должен изменить ответ, потому что в Windows 10 существуют случаи, когда вышеуказанные условия будут выполнены для окон, которые не вертикально закреплены.

Опция, которая работает, заключается в дополнительно используйте MonitorFromWindow, затем GetMonitorInfo, а затем сравниваете текущие значения top и bottom окна с значениями rcWork из MONITORINFO.

Так былоне чудоНет чистого и простого способа сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...