From c8c86f82824cb210852125d661f49fda468ae899 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Wed, 7 Nov 2018 23:28:19 +0100 Subject: [PATCH] remember window state --- src/main.c | 9 +++++---- src/settings.c | 7 ++++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main.c b/src/main.c index e539257..55d3b7f 100644 --- a/src/main.c +++ b/src/main.c @@ -39,11 +39,12 @@ void mouse_unlock(); /* from screenshot.c */ BOOL screenshot(struct IDirectDrawSurfaceImpl *); void Settings_Load(); -void Settings_SaveWindowRect(RECT *lpRect); +void Settings_Save(RECT *lpRect, int windowState); IDirectDrawImpl *ddraw = NULL; RECT WindowRect = { .left = -32000, .top = -32000, .right = 0, .bottom = 0 }; +int WindowState = -1; BOOL Direct3D9Active; //BOOL WINAPI DllMainCRTStartup(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpvReserved) @@ -92,7 +93,7 @@ BOOL WINAPI DllMain(HANDLE hDll, DWORD dwReason, LPVOID lpReserved) { printf("cnc-ddraw DLL_PROCESS_DETACH\n"); - Settings_SaveWindowRect(&WindowRect); + Settings_Save(&WindowRect, WindowState); timeEndPeriod(1); break; @@ -648,7 +649,7 @@ void ToggleFullscreen() if (ddraw->windowed) { mouse_unlock(); - ddraw->windowed = FALSE; + WindowState = ddraw->windowed = FALSE; SetWindowLong(ddraw->hWnd, GWL_STYLE, GetWindowLong(ddraw->hWnd, GWL_STYLE) & ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZE | WS_MAXIMIZE | WS_SYSMENU)); ddraw->altenter = TRUE; ddraw_SetDisplayMode(ddraw, ddraw->width, ddraw->height, 8); @@ -657,7 +658,7 @@ void ToggleFullscreen() else { mouse_unlock(); - ddraw->windowed = TRUE; + WindowState = ddraw->windowed = TRUE; if (Direct3D9Active) Direct3D9_Reset(); diff --git a/src/settings.c b/src/settings.c index 5728ca7..82e7a91 100644 --- a/src/settings.c +++ b/src/settings.c @@ -120,7 +120,7 @@ void Settings_Load() } } -void Settings_SaveWindowRect(RECT *lpRect) +void Settings_Save(RECT *lpRect, int windowState) { char buf[16]; @@ -147,6 +147,11 @@ void Settings_SaveWindowRect(RECT *lpRect) sprintf(buf, "%ld", lpRect->top); WritePrivateProfileString(ProcessFileName, "posY", buf, SettingsIniPath); } + + if (windowState != -1) + { + WritePrivateProfileString(ProcessFileName, "windowed", windowState ? "true" : "false", SettingsIniPath); + } } static void CreateSettingsIni()