2012-02-24 7 views
1

Я пытаюсь создать растровое изображение, содержащее то, что будет отображаться, если окно должно быть восстановлено на рабочем столе. GetWindowRect возвращает минимальный размер, GetWindowplacement возвращает туда, куда он будет идти. Но я не могу найти api, который говорит мне, насколько он будет большой.определение размера восстановленных окон

Как определить, насколько велика будет окно при восстановлении?

+2

Не работает 'WINDOWPLACEMENT :: rcNormalPosition'? –

ответ

4

GetWindowPlacement действительно то, что вы хотите. Используйте rcNormalPosition, который является RECT, содержащий координаты нормализованного положения. Или, если WPF_RESTORETOMAXIMIZED находится в окне размещения flags, затем используйте рабочую область монитора, с которым связано окно.

Сказав это, GetWindowPlacement может иногда возвращать вводящую в заблуждение информацию в rcNormalPosition в Windows 7. Я столкнулся с этим, когда вы используете функцию полуэкрана Aero. После этого, и если окно будет нормализовано, когда вы зададите вопрос, вы обнаружите, что GetWindowPlacement возвращает в rcNormalPosition a RECT, который не соответствует позиции привязки Aero. Справьтесь с этим, просто используя GetWindowRect, если окно нормализовано.

4

GetWindowPlacement говорит вам, насколько велика будет окно. Поле rcNormalPosition представляет собой размер RECT. Получите высоту и ширину, вычитайте сверху снизу, слева направо.

Примечания MSDN Комментарий о прямоугольнике, находящемся в рабочей координаты, а не координаты экрана:

Workspace координата отличается от координат экрана в том, что они занимают места и размеры панелей инструментов приложений (в том числе на панели задач), в Счет. Координата рабочего пространства (0,0) - верхний левый угол области рабочей области, причем область экрана не используется панелями инструментов приложения.

Смежные вопросы