Я знаю, что для многих это поздно, но я обнаружил, что CFrameWndEx - он будет в вашем классе CMainFrame - использует окно WM_CLOSE, чтобы СОХРАНИТЬ расположение ваших приложений по умолчанию.Я не знаю, что загружает местоположение.Однако, если вы переопределяете WM_CLOSE, то это состояние окна никогда не сохраняется при выходе из программы.Он попытается перезагрузить ваше последнее состояние окна, но, поскольку ни одно из них не было сохранено с самого начала, беспокоиться не о чем.
Ситуация GOTCHA: Поскольку фреймворк по-прежнему вызывает какую-то функцию WM_INIT для ЗАГРУЗКИ последней позиции, если вы скомпилировали свой код как обычно, разверните окно приложения, закройте программу с помощью X, WM_CLOSE будет иметьсохранить состояние приложения как MAXIMIZED.Если вы перекомпилируете приложение, переопределив WM_CLOSE, как упомянуто выше, перезапустите приложение, вы заметите, что оно начинается в максимальном размере!Очевидно, не то, что вы хотели.Таким образом, вы должны повторно активировать (закомментировать WM_CLOSE), позволить программе сохранить состояние приложения путем повторного запуска программы при закрытии как обычного окна.Позвольте переопределенной WM_CLOSE работать снова, и вы увидите, что нормальное окно появляется снова.
КОД:
В вашем CMainFrame.h
public: afx_msg void OnClose ();
В вашем CMainFrame.cpp ... Расширьте вашу КАРТУ СООБЩЕНИЯ
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx)
*ON_WM_CLOSE() // <<< I ADDED THIS*
.... END_MESSAGE_MAP()
void CMainFrame :: OnClose () {
PostQuitMessage(0);
//CFrameWndEx::OnClose(); << WE DO NOT WANT TO HAVE THIS CALLED!
}