summaryrefslogtreecommitdiff
path: root/alf/alf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'alf/alf.cpp')
-rw-r--r--alf/alf.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/alf/alf.cpp b/alf/alf.cpp
index 36e17ac..981d1e7 100644
--- a/alf/alf.cpp
+++ b/alf/alf.cpp
@@ -25,6 +25,9 @@ ALF_DestroyWindowPriv(ALFWindowPriv *priv)
}
ALF_ListInit(&priv->widgets);
+ if (priv->fonts.hMessageFont)
+ DeleteObject(priv->fonts.hMessageFont);
+
HeapFree(GetProcessHeap(), 0, priv->layout.columns);
HeapFree(GetProcessHeap(), 0, priv->layout.rows);
HeapFree(GetProcessHeap(), 0, priv);
@@ -540,6 +543,13 @@ ALF_CreateApplication(HINSTANCE hInstance)
return app;
}
+void
+ALF_TeardownApplication(ALFAPP app)
+{
+ UnregisterClass(app->comboClass, app->hInstance);
+ HeapFree(GetProcessHeap(), 0, app->compatFn);
+ HeapFree(GetProcessHeap(), 0, app);
+}
void
ALF_BuildRandomClassName(const TCHAR *prefix, TCHAR *buf)
@@ -601,6 +611,18 @@ ALF_RegisterWindowClass(ALFAPP app, const ALFWindowClassParams *params)
return MAKEINTATOM(classatom);
}
+void
+ALF_UnregisterWindowClass(ALFAPP app, LPCTSTR className)
+{
+ HWND tmp = CreateWindowEx(0, className, TEXT("dummy"), 0, 0, 0, 0, 0, NULL, 0, app->hInstance, 0);
+ ALFWindowVTable *pvtbl = (ALFWindowVTable*)GetClassLongPtr(tmp, 0);
+ DestroyWindow(tmp);
+
+ HeapFree(GetProcessHeap(), 0, pvtbl);
+
+ UnregisterClass(className, app->hInstance);
+}
+
HWND ALF_InstantiateWindow(ALFAPP app, LPCTSTR className, HWND hwndParent, void *closure)
{
return CreateWindowEx(0,
@@ -615,6 +637,12 @@ HWND ALF_InstantiateWindow(ALFAPP app, LPCTSTR className, HWND hwndParent, void
closure);
}
+void
+ALF_DestroyWindow(HWND win)
+{
+ DestroyWindow(win);
+}
+
ALFAPP
ALF_ApplicationFromWindow(HWND hwnd)
{