make SaveConfig more versatile, save settings on exit actually works now lol

This commit is contained in:
freedom
2023-08-01 00:42:04 -06:00
parent 14392d277d
commit f21116317e
4 changed files with 38 additions and 29 deletions

View File

@@ -108,6 +108,7 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
SystemParametersInfo(SPI_ICONVERTICALSPACING, 0, &ptOffset.y, 0); SystemParametersInfo(SPI_ICONVERTICALSPACING, 0, &ptOffset.y, 0);
// Create main window with a default size // Create main window with a default size
// NOTE: i pulled 320x240 out of my ass, make this dynamic later
if (!CreateWindow(wc.lpszClassName, szWindowTitle, WS_OVERLAPPEDWINDOW | WS_VISIBLE, if (!CreateWindow(wc.lpszClassName, szWindowTitle, WS_OVERLAPPEDWINDOW | WS_VISIBLE,
rcRoot.left + ptOffset.x, rcRoot.top + ptOffset.y, rcRoot.left + ptOffset.x, rcRoot.top + ptOffset.y,
rcRoot.left + ptOffset.x + 320, rcRoot.top + ptOffset.y + 240, rcRoot.left + ptOffset.x + 320, rcRoot.top + ptOffset.y + 240,

View File

@@ -117,12 +117,14 @@ BOOL IsProgMgrDefaultShell()
RETURNS - RETURNS -
TRUE if successful, FALSE if unsuccessful. TRUE if successful, FALSE if unsuccessful.
\* * * */ \* * * */
BOOL SaveConfig() BOOL SaveConfig(BOOL bPos, BOOL bSettings, BOOL bGroups)
{ {
BOOL bConfigStatus = TRUE; BOOL bConfigStatus = TRUE;
WINDOWPLACEMENT wpProgMgr; WINDOWPLACEMENT wpProgMgr;
RECT rcWindow; RECT rcWindow;
if (bSettings)
{
// Shrink the settings into the bitmask and save it // Shrink the settings into the bitmask and save it
// There's definitely a better way to do this but... // There's definitely a better way to do this but...
// I'll get to it later :) // I'll get to it later :)
@@ -136,7 +138,10 @@ BOOL SaveConfig()
if (!RegSetValueEx(hKeySettings, pszSettingsMask, 0, REG_DWORD, if (!RegSetValueEx(hKeySettings, pszSettingsMask, 0, REG_DWORD,
(const BYTE*)&dwSettingsMask, sizeof(dwSettingsMask)) == ERROR_SUCCESS) (const BYTE*)&dwSettingsMask, sizeof(dwSettingsMask)) == ERROR_SUCCESS)
bConfigStatus = FALSE; bConfigStatus = FALSE;
}
if (bPos)
{
// Get and save window position // Get and save window position
wpProgMgr.length = sizeof(WINDOWPLACEMENT); wpProgMgr.length = sizeof(WINDOWPLACEMENT);
GetWindowPlacement(hWndProgMgr, &wpProgMgr); GetWindowPlacement(hWndProgMgr, &wpProgMgr);
@@ -145,6 +150,7 @@ BOOL SaveConfig()
if (!RegSetValueEx(hKeySettings, pszSettingsWindow, 0, REG_BINARY, if (!RegSetValueEx(hKeySettings, pszSettingsWindow, 0, REG_BINARY,
(const BYTE*)&rcWindow, sizeof(rcWindow)) == ERROR_SUCCESS) (const BYTE*)&rcWindow, sizeof(rcWindow)) == ERROR_SUCCESS)
bConfigStatus = FALSE; bConfigStatus = FALSE;
}
return bConfigStatus; return bConfigStatus;
} }

View File

@@ -44,4 +44,4 @@ extern RECT rcMainWindow;
BOOL InitializeRegistryKeys(VOID); BOOL InitializeRegistryKeys(VOID);
BOOL IsProgMgrDefaultShell(VOID); BOOL IsProgMgrDefaultShell(VOID);
BOOL LoadConfig(VOID); BOOL LoadConfig(VOID);
BOOL SaveConfig(VOID); BOOL SaveConfig(BOOL bPos, BOOL bSettings, BOOL bGroups);

View File

@@ -55,22 +55,20 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
case WM_SYSCOMMAND: case WM_SYSCOMMAND:
{ {
if (wParam == IDM_SHUTDOWN)
{
CmdProc(hWnd, wParam, lParam);
break;
}
if (wParam == IDM_TASKMGR) if (wParam == IDM_TASKMGR)
{ {
ShellExecute(hWndProgMgr, L"open", L"TASKMGR.EXE", NULL, NULL, SW_NORMAL); ShellExecute(hWndProgMgr, L"open", L"TASKMGR.EXE", NULL, NULL, SW_NORMAL);
break; break;
} }
if (wParam == IDM_SHUTDOWN)
if (wParam == IDM_FILE_EXIT) if (wParam == IDM_FILE_EXIT)
if (wParam == IDM_FILE_RUN) if (wParam == IDM_FILE_RUN)
{ {
CmdProc(hWnd, wParam, lParam); CmdProc(hWnd, wParam, lParam);
break; break;
} }
goto WndProcDefault; goto WndProcDefault;
//return DefFrameProc(hWnd, hwndMDIClient, uiMsg, wParam, lParam); //return DefFrameProc(hWnd, hwndMDIClient, uiMsg, wParam, lParam);
} }
@@ -83,8 +81,12 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
goto WndProcDefault; goto WndProcDefault;
case WM_CLOSE: case WM_CLOSE:
if (GetShellWindow()) if (bSaveSettings)
SaveConfig(TRUE, TRUE, TRUE);
if (bIsDefaultShell && (GetShellWindow() != NULL))
SetShellWindow(0); SetShellWindow(0);
PostQuitMessage(0); PostQuitMessage(0);
break; break;
@@ -151,7 +153,7 @@ LRESULT CALLBACK CmdProc(HWND hWnd, WPARAM wParam, LPARAM lParam)
case IDM_OPTIONS_SAVENOW: case IDM_OPTIONS_SAVENOW:
SaveConfig: SaveConfig:
SaveConfig(); SaveConfig(TRUE, TRUE, TRUE);
break; break;
case IDM_HELP_INDEX: case IDM_HELP_INDEX: