Для копирования из моего собственного комментария выше -
Похоже, что rcNormalPosition
в WINDOWPLACEMENT
сохраняет исходную (предварительно закрепленную) позицию окна.Таким образом, простое сравнение с эффективным прямоугольником окна покажет, находится ли окно в «особом» состоянии.Тогда нам просто нужно взглянуть на showCommand
- если оно SW_SHOWNORMAL
, то мы находимся в закрепленном состоянии.
Редактировать
После полевых испытанийПри таком подходе я должен изменить ответ, потому что в Windows 10 существуют случаи, когда вышеуказанные условия будут выполнены для окон, которые не вертикально закреплены.
Опция, которая работает, заключается в дополнительно используйте MonitorFromWindow
, затем GetMonitorInfo
, а затем сравниваете текущие значения top
и bottom
окна с значениями rcWork
из MONITORINFO
.
Так былоне чудоНет чистого и простого способа сделать это.