Максимальное окно восстанавливается до полного экрана
С помощью CWnd::ShowWindow(SW_SHOWMAXIMIZED)
максимально увеличивает окно моего приложения, как и ожидалось.
Однако при нажатии кнопки восстановления в приложении (или двойном щелчке по строке заголовка) восстановленный размер совпадает с размером развернутого окна, что вводит пользователя в заблуждение.
Использование этого альтернативного кода имеет ту же проблему:
WINDOWPLACEMENT wndpl;
GetWindowPlacement(&wndpl);
wndpl.showCmd = SW_SHOWMAXIMIZED;
SetWindowPlacement(&wndpl);
Как я могу сохранить размер по умолчанию не максимальный при восстановлении.
2 ответа
Я решил свою проблему, и решение может решить и вашу. Моя проблема заключалась в том, что, хотя я вызывал SetWindowPlacement(&wndpl) в CMainFrame::OnCreate, окно не было должным образом восстановлено, если оно было развернуто. Я добавил две строки кода перед SetWindowPlacement, и теперь он работает как положено.
CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
// Obtain wndpl, maybe from registry
AfxGetApp()->m_nCmdShow = wndpl.showCmd;
wndpl.showCmd = SW_SHOW;
SetWindowPlacement(&wndpl);
}
Эти две строки помогают основному коду не портить вещи при вызове ActivateFrame, который вызывает ShowWindow с параметром, полученным из CWinApp::m_nCmdShow.
Вся информация находится в файле с расширением.RC. Я никогда не использовал процедуры максимизации / восстановления, хотя вы должны искать "DIALOGEX" для того же окна. Вы можете изменить его, используя любой редактор (блокнот, ультраредакт и т. Д.)