From b79d3e8521a6a05dbb403eaf226f1b9aecdab3c2 Mon Sep 17 00:00:00 2001 From: spx Date: Sat, 5 Feb 2011 07:48:29 +0000 Subject: [PATCH] Fixed minor access violation when closing About dialog. --- Library/AboutDialog.cpp | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/Library/AboutDialog.cpp b/Library/AboutDialog.cpp index d9196929..c788f332 100644 --- a/Library/AboutDialog.cpp +++ b/Library/AboutDialog.cpp @@ -27,6 +27,8 @@ #define LOGTIMER 1 +#define WM_DELAYED_CLOSE WM_APP + 0 + extern CRainmeter* Rainmeter; INT_PTR CALLBACK AboutProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam); @@ -533,23 +535,14 @@ INT_PTR CALLBACK AboutProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lPa pos->cx = max(420, pos->cx); pos->cy = max(340, pos->cy); } - break; + return TRUE; case WM_SIZE: RepositionControls(hwndDlg); - break; + return TRUE; case WM_CLOSE: - KillTimer(hwndDlg, LOGTIMER); - Rainmeter->SaveSettings(); - GetWindowPlacement(hwndDlg, &g_DialogPlacement); - if (g_DialogPlacement.showCmd == SW_SHOWMINIMIZED) - { - g_DialogPlacement.showCmd = SW_SHOWNORMAL; - } - DestroyWindow(hwndDlg); - g_DialogWin = NULL; - g_Plugins.clear(); + PostMessage(hwndDlg, WM_DELAYED_CLOSE, 0, 0); return TRUE; case WM_COMMAND: @@ -564,10 +557,10 @@ INT_PTR CALLBACK AboutProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lPa { Rainmeter->SetDisableVersionCheck(FALSE); } - break; + return TRUE; case IDOK: - SendMessage(hwndDlg, WM_CLOSE, 0, 0); + PostMessage(hwndDlg, WM_DELAYED_CLOSE, 0, 0); return TRUE; case IDC_ABOUT_ENTRIES: @@ -586,11 +579,25 @@ INT_PTR CALLBACK AboutProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lPa UpdateWidgets(); UpdateAboutStatistics(); + return TRUE; } break; } break; + case WM_DELAYED_CLOSE: + KillTimer(hwndDlg, LOGTIMER); + Rainmeter->SaveSettings(); + GetWindowPlacement(hwndDlg, &g_DialogPlacement); + if (g_DialogPlacement.showCmd == SW_SHOWMINIMIZED) + { + g_DialogPlacement.showCmd = SW_SHOWNORMAL; + } + DestroyWindow(hwndDlg); + g_DialogWin = NULL; + g_Plugins.clear(); + return TRUE; + case WM_TIMER: if (wParam == LOGTIMER) {