diff --git a/redo/windows/dialoghelper.c b/redo/windows/dialoghelper.c index 3fe803a2..1d722c56 100644 --- a/redo/windows/dialoghelper.c +++ b/redo/windows/dialoghelper.c @@ -92,6 +92,12 @@ ATOM initDialogHelper(HICON hDefaultIcon, HCURSOR hDefaultCursor) return RegisterClassW(&wc); } +void uninitDialogHelper(void) +{ + if (UnregisterClassW(dialogHelperClass, hInstance) == 0) + logLastError("error unregistering dialog helper window class in uninitDialogHelper()"); +} + HWND beginDialogHelper(void) { HWND hwnd; diff --git a/redo/windows/init.c b/redo/windows/init.c index 7184b553..41ee3dcb 100644 --- a/redo/windows/init.c +++ b/redo/windows/init.c @@ -166,16 +166,16 @@ void uiUninit(void) { uninitMenus(); CoUninitialize(); - // TODO uninitialize the dialog helper - // TODO delete hollow brush + uninitDialogHelper(); + if (DeleteObject(hollowBrush) == 0) + logLastError("error freeing hollow brush in uiUninit()"); if (SetConsoleCtrlHandler(consoleCtrlHandler, FALSE) == 0) - logLastError("error unregistering console end session handler"); + logLastError("error unregistering console end session handler in uiUninit()"); uninitContainer(); if (DeleteObject(hMessageFont) == 0) logLastError("error deleting control font in uiUninit()"); unregisterWindowClass(); - // TODO delete default cursor - // TODO delete default icon + // no need to delete the default icon or cursor; see http://stackoverflow.com/questions/30603077/ uninitResizes(); uninitTypes(); uninitAlloc(); diff --git a/redo/windows/uipriv_windows.h b/redo/windows/uipriv_windows.h index 88db09a0..6e30ef11 100644 --- a/redo/windows/uipriv_windows.h +++ b/redo/windows/uipriv_windows.h @@ -108,6 +108,7 @@ extern BOOL runWM_HSCROLL(WPARAM, LPARAM, LRESULT *); extern void dialogHelperRegisterWindow(HWND); extern void dialogHelperUnregisterWindow(HWND); extern ATOM initDialogHelper(HICON, HCURSOR); +extern void uninitDialogHelper(void); extern HWND beginDialogHelper(void); extern void endDialogHelper(HWND);