2013-12-09 2 views
0

Я начинаю MFC. Я обнаружил эту небольшую ошибку, когда создал простое приложение MFC на основе формы (используя VS2012), но я не знаю, как его исправить.MFC: ошибка на «Максимальная кнопка», если программа была ранее закрыта в максимизированном состоянии.

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

Вот шаги, чтобы найти ошибку:

1) открыть программу

2) максимизирует окно

3) закрыть программу

4) повторного включения функции программа

Что случилось, когда я заново запускаю программу, хотя окно не находится в максимизированном состоянии, кнопка «максимизировать» в верхнем правом окне не показывать правильно. Вместо того, чтобы показывать максимальный значок, теперь он показывает значок «восстановить вниз» ...

Как исправить эту ошибку?

Кроме того, как отключить эту функцию, чтобы программа всегда могла запускаться в определенной позиции и размере независимо от предыдущего состояния закрытия?

Использование функции m_pMainWnd-> MoveWindow (x, y, Width, Height) до m_pMainWnd-> ShowWindow (SW_SHOW) ;?

+1

Скорее всего, вы только сохраняете размер окна, а не состояние окна. Можете ли вы опубликовать больше своего кода, чтобы мы могли это подтвердить? –

+0

Привет, я хотел бы поделиться своим кодом. Но какую часть кода я должен разместить? Я заметил, что эта же ошибка появится даже по умолчанию (без добавления каких-либо изменений), если вы создаете проект с использованием стиля проекта «Visual Studio». – Kent

+1

Я думал о коде, который сохраняет и восстанавливает размеры окна. Если этот код является частью MFC, и вы используете только функции MFC, чтобы использовать его, отправьте код, который вызывает эти функции. –

ответ

1

Когда я создаю образец по умолчанию с CFormView, OnInitialUpdate содержит строку ResizeParentToFit();

Удалите его, и приложение максимизируется как предыдущее состояние. ResizeParentToFit, делает именно то, что говорит название. Он изменяет размер родительского окна, чтобы родительское окно соответствовало форме, которую вы создали.

Если вы не хотите, чтобы расположение окна вообще было восстановлено, установите переменную CWinApEx :: m_bLoadWindowPlacement в FALSE. По умолчанию для этого флага установлено значение ИСТИНА!

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