Сохранить и восстановить позицию Aero Snap в Windows 7

Скажем, у меня есть окно, и я хочу сохранить его положение, когда окно закрывается и восстанавливается, когда окно снова открывается. Типичный способ сделать это - вызвать GetWindowPlacement/SetWindowPlacement. Это поможет запомнить положение и максимизированное/минимизированное состояние.

В Windows 7 вы можете состыковать окно со стороной экрана, используя "Aero Snap" . Мой вопрос в том, как вы сохраняете и восстанавливаете окна, которые были "Snapped", чтобы восстановить состояние "Snap". GetWindowPlacement/SetWindowPlacement не решает эту проблему (насколько мне известно), и я не видел никакого API-интерфейса "Snap" в Windows 7.

Здесь есть аналогичный вопрос Как было обнаружено, что окно было изменено размером с Windows7, но в этом случае кажется, что OP просто хотел восстановить позицию, а не состояние "Snap".

Ответ 1

Обходным путем является вызов GetWindowRect(), чтобы получить фактические координаты окна и скопировать их по плохим координатам в WINDOWPLACEMENT::rcNormalPosition.