make SaveConfig more versatile, save settings on exit actually works now lol
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -117,34 +117,40 @@ 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;
|
||||||
|
|
||||||
// Shrink the settings into the bitmask and save it
|
if (bSettings)
|
||||||
// There's definitely a better way to do this but...
|
{
|
||||||
// I'll get to it later :)
|
// Shrink the settings into the bitmask and save it
|
||||||
dwSettingsMask =
|
// There's definitely a better way to do this but...
|
||||||
(bAutoArrange && PMS_AUTOARRANGE) * PMS_AUTOARRANGE |
|
// I'll get to it later :)
|
||||||
(bMinOnRun && PMS_MINONRUN) * PMS_MINONRUN |
|
dwSettingsMask =
|
||||||
(bTopMost && PMS_TOPMOST) * PMS_TOPMOST |
|
(bAutoArrange && PMS_AUTOARRANGE) * PMS_AUTOARRANGE |
|
||||||
(bShowUsername && PMS_SHOWUSERNAME) * PMS_SHOWUSERNAME |
|
(bMinOnRun && PMS_MINONRUN) * PMS_MINONRUN |
|
||||||
(bSaveSettings && PMS_SAVESETTINGS) * PMS_SAVESETTINGS;
|
(bTopMost && PMS_TOPMOST) * PMS_TOPMOST |
|
||||||
|
(bShowUsername && PMS_SHOWUSERNAME) * PMS_SHOWUSERNAME |
|
||||||
|
(bSaveSettings && PMS_SAVESETTINGS) * PMS_SAVESETTINGS;
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
// Get and save window position
|
|
||||||
wpProgMgr.length = sizeof(WINDOWPLACEMENT);
|
|
||||||
GetWindowPlacement(hWndProgMgr, &wpProgMgr);
|
|
||||||
CopyRect(&rcWindow, &wpProgMgr.rcNormalPosition);
|
|
||||||
|
|
||||||
if (!RegSetValueEx(hKeySettings, pszSettingsWindow, 0, REG_BINARY,
|
if (bPos)
|
||||||
(const BYTE*)&rcWindow, sizeof(rcWindow)) == ERROR_SUCCESS)
|
{
|
||||||
bConfigStatus = FALSE;
|
// Get and save window position
|
||||||
|
wpProgMgr.length = sizeof(WINDOWPLACEMENT);
|
||||||
|
GetWindowPlacement(hWndProgMgr, &wpProgMgr);
|
||||||
|
CopyRect(&rcWindow, &wpProgMgr.rcNormalPosition);
|
||||||
|
|
||||||
|
if (!RegSetValueEx(hKeySettings, pszSettingsWindow, 0, REG_BINARY,
|
||||||
|
(const BYTE*)&rcWindow, sizeof(rcWindow)) == ERROR_SUCCESS)
|
||||||
|
bConfigStatus = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
return bConfigStatus;
|
return bConfigStatus;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user