From 04e6f2fe890f48724362f1cf8f1b620b84cb6275 Mon Sep 17 00:00:00 2001 From: Darkvater Date: Sun, 13 Aug 2006 10:22:34 +0000 Subject: (svn r5874) -Feature [FS#234]: Remember the maximized state and restore on start. This also fixes a bug where a different resolution is chosen for a maximized window, but it retains the maximized flag. Only win32. --- settings.c | 3 ++- video/win32_v.c | 12 ++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/settings.c b/settings.c index 5e7faae11..848d8d699 100644 --- a/settings.c +++ b/settings.c @@ -1157,7 +1157,7 @@ static const SettingDesc _music_settings[] = { /* win32_v.c only settings */ #ifdef WIN32 -extern bool _force_full_redraw, _double_size; +extern bool _force_full_redraw, _double_size, _window_maximize; extern uint _display_hz, _fullscreen_bpp; static const SettingDescGlobVarList _win32_settings[] = { @@ -1165,6 +1165,7 @@ static const SettingDescGlobVarList _win32_settings[] = { SDTG_BOOL("force_full_redraw", S, 0, _force_full_redraw,false, STR_NULL, NULL), SDTG_VAR("fullscreen_bpp", SLE_UINT, S, 0, _fullscreen_bpp, 8, 8, 32, STR_NULL, NULL), SDTG_BOOL("double_size", S, 0, _double_size, false, STR_NULL, NULL), + SDTG_BOOL("window_maximize", S, 0, _window_maximize, false, STR_NULL, NULL), SDTG_END() }; #endif /* WIN32 */ diff --git a/video/win32_v.c b/video/win32_v.c index 7f05406c3..4d25b6e65 100644 --- a/video/win32_v.c +++ b/video/win32_v.c @@ -29,6 +29,7 @@ static struct { bool _force_full_redraw; bool _double_size; +bool _window_maximize; uint _display_hz; uint _fullscreen_bpp; @@ -265,6 +266,7 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP } else { AskExitGame(); } + _window_maximize = IsZoomed(_wnd.main_wnd); return 0; case WM_LBUTTONDOWN: @@ -565,6 +567,7 @@ static void MakeWindow(bool full_screen) y = (GetSystemMetrics(SM_CYSCREEN) - h) / 2; if (_wnd.main_wnd) { + ShowWindow(_wnd.main_wnd, SW_SHOWNORMAL); // remove maximize-flag SetWindowPos(_wnd.main_wnd, 0, x, y, w, h, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOZORDER); } else { char Windowtitle[50]; @@ -572,8 +575,13 @@ static void MakeWindow(bool full_screen) snprintf(Windowtitle, lengthof(Windowtitle), "OpenTTD %s", _openttd_revision); _wnd.main_wnd = CreateWindow("OTTD", Windowtitle, style, x, y, w, h, 0, 0, GetModuleHandle(NULL), 0); - if (_wnd.main_wnd == NULL) - error("CreateWindow failed"); + if (_wnd.main_wnd == NULL) error("CreateWindow failed"); + + /* On startup let's see if we quit maximized the last time, restore that */ + if (_window_maximize) { + ShowWindow(_wnd.main_wnd, SW_MAXIMIZE); + _window_maximize = false; + } } } GameSizeChanged(); // invalidate all windows, force redraw -- cgit v1.2.3-70-g09d2