Как насчет использования GetWindowPlacement
? , который возвращает WINDOWPLACEMENT
структуру , которая содержит информацию о координатах окна в восстановленной позиции.
Помните, что (как отметил Лео Дэвидсон в комментариях) вы должны соблюдать разницу между рабочим пространством и координатами экрана.Как объясняется в документации WINDOWPLACEMENT
:
Координаты, используемые в структуре WINDOWPLACEMENT, должны использоваться только функциями GetWindowPlacement и SetWindowPlacement.Передача координат рабочей области функциям, которые ожидают экранные координаты (например, SetWindowPos), приведет к тому, что окно появится в неправильном месте.Например, если панель задач находится в верхней части экрана, сохранение координат окна с помощью GetWindowPlacement и восстановление их с помощью SetWindowPos приводит к тому, что окно «ползет» вверх по экрану.
Или, прощеРешение, которое я без сомнения использовал ранее, состоит в том, чтобы просто проверить, свернуто ли окно перед сохранением состояния, и если это так, пропустить сохранение любой информации о состоянии.
Поскольку объясняется, почему окноменяет свой размер, когда его сворачивают, Запись в блоге Раймонда Чена (и связанная с ней запись) по теме обязательна для чтения.Они на самом деле не меняют размер кнопки на панели задач, а скорее на предопределенный размер 160x31.Он объясняет, что вы можете увидеть это, свернув дочернее окно MDI с его родителем - это действительно его размер.