From 0eba0d96ebfe27ba225577a4e164975c8b09e4c3 Mon Sep 17 00:00:00 2001 From: freedom Date: Sat, 22 Jul 2023 03:35:03 -0600 Subject: [PATCH] updatechecks function for checkmarks --- progmgr/progmgr.c | 31 ++++++++++++++++--------------- progmgr/progmgr.h | 3 ++- progmgr/wndproc.c | 41 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 16 deletions(-) diff --git a/progmgr/progmgr.c b/progmgr/progmgr.c index c15e243..03750bc 100644 --- a/progmgr/progmgr.c +++ b/progmgr/progmgr.c @@ -57,6 +57,7 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi LoadString(hAppInstance, IDS_PMCLASS, szClass, ARRAYSIZE(szClass)); LoadString(hAppInstance, IDS_APPTITLE, szAppTitle, ARRAYSIZE(szAppTitle)); LoadString(hAppInstance, IDS_WEBSITE, szWebsite, ARRAYSIZE(szWebsite)); + GetUserNameEx(NameSamCompatible, szUsername, &dwUsernameLen); // Register the Frame Window wc.lpfnWndProc = WndProc; @@ -75,16 +76,17 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi return FALSE; // Perform Registry actions, close if registry is inaccessible. - if (!InitializeRegistryKeys()) + if (InitializeRegistryKeys()) + { + bIsDefaultShell = IsProgMgrDefaultShell(); + LoadConfig(); + } + else + { return FALSE; + } - bIsDefaultShell = IsProgMgrDefaultShell(); - - LoadConfig(); - - // Add username to window title - GetUserNameEx(NameSamCompatible, szUsername, &dwUsernameLen); - + // Add username to window title if settings permit StringCchCopy(szWindowTitle, ARRAYSIZE(szAppTitle), szAppTitle); if (bShowUsername) @@ -104,13 +106,12 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi hMenu = GetMenu(hWndProgMgr); hSystemMenu = GetSystemMenu(hWndProgMgr, FALSE); - // Use our configuration to update our menu checkmarks - if (bAutoArrange) - CheckMenuItem(hMenu, IDM_OPTIONS_AUTOARRANGE, MF_CHECKED); - if (bMinOnRun) - CheckMenuItem(hMenu, IDM_OPTIONS_MINONRUN, MF_CHECKED); - if (bSaveSettings) - CheckMenuItem(hMenu, IDM_OPTIONS_SAVESETTINGS, MF_CHECKED); + // Update our menu checkmarks + UpdateChecks(bAutoArrange, IDM_OPTIONS, IDM_OPTIONS_AUTOARRANGE); + UpdateChecks(bMinOnRun, IDM_OPTIONS, IDM_OPTIONS_MINONRUN); + UpdateChecks(bTopMost, IDM_OPTIONS, IDM_OPTIONS_TOPMOST); + UpdateChecks(bShowUsername, IDM_OPTIONS, IDM_OPTIONS_SHOWUSERNAME); + UpdateChecks(bSaveSettings, IDM_OPTIONS, IDM_OPTIONS_SAVESETTINGS); if (bIsDefaultShell) { diff --git a/progmgr/progmgr.h b/progmgr/progmgr.h index 1a815ff..2c2a0e6 100644 --- a/progmgr/progmgr.h +++ b/progmgr/progmgr.h @@ -45,4 +45,5 @@ BOOL RunFileDlg(HWND hWndOwner, HICON hIcon, LPWSTR lpszDir, LPWSTR lpszTitle, L BOOL ExitWindowsDialog(HWND hWndOwner); // WNDPROC.C LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); -LRESULT CALLBACK CmdProc(HWND hWnd, WPARAM wParam, LPARAM lParam); \ No newline at end of file +LRESULT CALLBACK CmdProc(HWND hWnd, WPARAM wParam, LPARAM lParam); +VOID UpdateChecks(BOOL bVarMenu, UINT uSubMenu, UINT uID); \ No newline at end of file diff --git a/progmgr/wndproc.c b/progmgr/wndproc.c index b856c96..0d57f56 100644 --- a/progmgr/wndproc.c +++ b/progmgr/wndproc.c @@ -120,7 +120,32 @@ LRESULT CALLBACK CmdProc(HWND hWnd, WPARAM wParam, LPARAM lParam) PostQuitMessage(0); break; + case IDM_OPTIONS_AUTOARRANGE: + bAutoArrange = !bAutoArrange; + UpdateChecks(bAutoArrange, IDM_OPTIONS, IDM_OPTIONS_AUTOARRANGE); + goto SaveConfig; + + case IDM_OPTIONS_MINONRUN: + bMinOnRun = !bMinOnRun; + UpdateChecks(bMinOnRun, IDM_OPTIONS, IDM_OPTIONS_MINONRUN); + goto SaveConfig; + + case IDM_OPTIONS_TOPMOST: + bTopMost = !bTopMost; + UpdateChecks(bTopMost, IDM_OPTIONS, IDM_OPTIONS_TOPMOST); + goto SaveConfig; + case IDM_OPTIONS_SHOWUSERNAME: + bShowUsername = !bShowUsername; + UpdateChecks(bShowUsername, IDM_OPTIONS, IDM_OPTIONS_SHOWUSERNAME); + goto SaveConfig; + + case IDM_OPTIONS_SAVESETTINGS: + bSaveSettings = !bSaveSettings; + UpdateChecks(bSaveSettings, IDM_OPTIONS, IDM_OPTIONS_SAVESETTINGS); + goto SaveConfig; + case IDM_OPTIONS_SAVENOW: +SaveConfig: SaveConfig(); break; @@ -144,6 +169,22 @@ LRESULT CALLBACK CmdProc(HWND hWnd, WPARAM wParam, LPARAM lParam) return TRUE; } +/* * * *\ + UpdateChecks - + Updated checkmarks for a menu based on input + RETURNS - + Nothing! +\* * * */ +VOID UpdateChecks(BOOL bVarMenu, UINT uSubMenu, UINT uID) +{ + HMENU hMenu; + + hMenu = GetMenu(hWndProgMgr); + CheckMenuItem(hMenu, uID, (WORD)(bVarMenu ? MF_CHECKED : MF_UNCHECKED)); + + return; +} + /* * * *\ ChildWndProc - Program Manager's window procedure.