diff options
Diffstat (limited to 'alf/alf.cpp')
| -rw-r--r-- | alf/alf.cpp | 28 |
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) { |
