From 3f3191ea7a3d0b3885c5b3fb565b6b9693959663 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Fri, 8 May 2015 15:01:23 -0400 Subject: [PATCH] More Windows uiUninit() implementation. --- windows/container.c | 8 ++++++++ windows/init.c | 4 ++-- windows/uipriv_windows.h | 2 ++ windows/window.c | 6 ++++++ 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/windows/container.c b/windows/container.c index e2fac8b9..e1e98182 100644 --- a/windows/container.c +++ b/windows/container.c @@ -277,6 +277,14 @@ const char *initContainer(HICON hDefaultIcon, HCURSOR hDefaultCursor) return NULL; } +void uninitContainer(void) +{ + if (DestroyWindow(initialParent) == 0) + logLastError("error destroying initial parent in uninitContainer()"); + if (UnregisterClassW(containerClass, hInstance) == 0) + logLastError("error unregistering uiContainer window class in uninitContainer()"); +} + // subclasses override this and call back here when all children are destroyed static void containerDestroy(uiControl *cc) { diff --git a/windows/init.c b/windows/init.c index 60b60f2f..750acbad 100644 --- a/windows/init.c +++ b/windows/init.c @@ -109,9 +109,9 @@ void uiUninit(void) { uninitMenus(); // TODO delete hollow brush - // TODO uninit container + uninitContainer(); // TODO delete message font - // TODO uninit window + unregisterWindowClass(); // TODO delete default cursor // TODO delete default icon uninitAlloc(); diff --git a/windows/uipriv_windows.h b/windows/uipriv_windows.h index f6ff8643..5b79671c 100644 --- a/windows/uipriv_windows.h +++ b/windows/uipriv_windows.h @@ -72,10 +72,12 @@ extern const char *initCommonControls(void); // window.c extern ATOM registerWindowClass(HICON, HCURSOR); +extern void unregisterWindowClass(void); // container.c extern HWND initialParent; extern const char *initContainer(HICON, HCURSOR); +extern void uninitContainer(void); // menu.c extern HMENU makeMenubar(void); diff --git a/windows/window.c b/windows/window.c index aa3fddc1..5602fbb8 100644 --- a/windows/window.c +++ b/windows/window.c @@ -71,6 +71,12 @@ ATOM registerWindowClass(HICON hDefaultIcon, HCURSOR hDefaultCursor) return RegisterClassW(&wc); } +void unregisterWindowClass(void) +{ + if (UnregisterClassW(windowClass, hInstance) == 0) + logLastError("error unregistering uiWindow window class in unregisterWindowClass()"); +} + static int defaultOnClosing(uiWindow *w, void *data) { return 0;