summaryrefslogtreecommitdiff
path: root/alf
diff options
context:
space:
mode:
Diffstat (limited to 'alf')
-rw-r--r--alf/alf.cpp83
-rw-r--r--alf/alf.h18
-rw-r--r--alf/alfcombobox.cpp60
-rw-r--r--alf/alfcompat.h3
-rw-r--r--alf/alfpanel.cpp23
-rw-r--r--alf/alfpriv.h16
-rw-r--r--alf/alfspacer.cpp16
7 files changed, 111 insertions, 108 deletions
diff --git a/alf/alf.cpp b/alf/alf.cpp
index 0e07e0f..92ba1bf 100644
--- a/alf/alf.cpp
+++ b/alf/alf.cpp
@@ -2,13 +2,15 @@
#include <objbase.h>
+static LONG _alf_initLock = 0;
+static LONG _alf_initCounter = 0;
+
/* ALF App and Window */
static void
ALF_InitializeWindowPriv(HWND hwnd, ALFWindowPriv *priv, void *closure)
{
priv->vtbl = (ALFWindowVTable*)GetClassLongPtr(hwnd, 0);
- priv->app = (ALFAPP)GetClassLongPtr(hwnd, sizeof(void*));
priv->closure = closure;
priv->defid = (WORD)-1;
ALF_Layout_Init(&priv->layout);
@@ -138,10 +140,6 @@ ALF_DefWindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
return 0;
}
- if (msg == ALF_WM_GETAPPLICATION) {
- return (LRESULT)priv->app;
- }
-
if (msg == ALF_WM_UPDATEFONTS) {
ALF_UpdateFontsPriv(hwnd, priv);
return 0;
@@ -346,32 +344,48 @@ ALF_WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
}
}
-ALFAPP
-ALF_CreateApplication(HINSTANCE hInstance)
+void
+ALF_Initialize(void)
{
- ALFAPP app = ALF_New(struct ALFAppPriv, 1);
- app->hInstance = hInstance;
+ // acquire init lock
+ while (InterlockedExchange(&_alf_initLock, 1)) {
+ Sleep(0);
+ }
- InitCommonControls();
+ // we have the lock!
+ if (!_alf_initCounter++) {
+ InitCommonControls();
- ALF_RegisterComboClass(app);
- ALF_RegisterPanelClass(app);
- ALF_RegisterSpacerClass(app);
+ ALF_RegisterComboClass();
+ ALF_RegisterPanelClass();
+ ALF_RegisterSpacerClass();
- ALF_Compat_BufferedPaintInit();
+ ALF_Compat_BufferedPaintInit();
+ }
- return app;
+ // release init lock
+ InterlockedExchange(&_alf_initLock, 0);
}
void
-ALF_TeardownApplication(ALFAPP app)
+ALF_UnInitialize(void)
{
- ALF_Compat_BufferedPaintUnInit();
+ // acquire init lock
+ while (InterlockedExchange(&_alf_initLock, 1)) {
+ Sleep(0);
+ }
- UnregisterClass(app->comboClass, app->hInstance);
- UnregisterClass(app->panelClass, app->hInstance);
- UnregisterClass(app->spacerClass, app->hInstance);
- ALF_Free(app);
+ // we have the lock!
+ if (!--_alf_initCounter) {
+ ALF_Compat_BufferedPaintUnInit();
+
+ UnregisterClass(_alf_comboClass, ALF_HINSTANCE);
+ UnregisterClass(_alf_panelClass, ALF_HINSTANCE);
+ UnregisterClass(_alf_spacerClass, ALF_HINSTANCE);
+ }
+
+ // release init lock
+ InterlockedExchange(&_alf_initLock, 0);
}
void *
@@ -411,7 +425,7 @@ ALF_BuildRandomClassName(const TCHAR* prefix, TCHAR* buf, DWORD cchBuf)
}
LPTSTR
-ALF_RegisterWindowClass(ALFAPP app, const ALFWindowClassParams *params)
+ALF_RegisterWindowClass(HINSTANCE hInstance, const ALFWindowClassParams *params)
{
WNDCLASS cls;
ZeroMemory(&cls, sizeof(cls));
@@ -426,7 +440,7 @@ ALF_RegisterWindowClass(ALFAPP app, const ALFWindowClassParams *params)
}
cls.style = params->classStyle;
- cls.hInstance = app->hInstance;
+ cls.hInstance = hInstance;
cls.hCursor = LoadCursor(NULL, (LPTSTR)IDC_ARROW);
if (LOBYTE(LOWORD(GetVersion())) >= 4) {
cls.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
@@ -436,7 +450,7 @@ ALF_RegisterWindowClass(ALFAPP app, const ALFWindowClassParams *params)
}
cls.lpszClassName = classNamePtr;
cls.cbWndExtra = sizeof(void*);
- cls.cbClsExtra = sizeof(void*)*2;
+ cls.cbClsExtra = sizeof(void*);
cls.lpfnWndProc = ALF_WindowProc;
ATOM classatom = RegisterClass(&cls);
@@ -447,27 +461,26 @@ ALF_RegisterWindowClass(ALFAPP app, const ALFWindowClassParams *params)
*pvtbl = params->vtbl;
// XXX: This could have been a HWND_MESSAGE window, but Win95 doesn't support these
- HWND tmp = CreateWindowEx(0, MAKEINTATOM(classatom), TEXT("dummy"), 0, 0, 0, 0, 0, NULL, 0, app->hInstance, 0);
+ HWND tmp = CreateWindowEx(0, MAKEINTATOM(classatom), TEXT("dummy"), 0, 0, 0, 0, 0, NULL, 0, hInstance, 0);
SetClassLongPtr(tmp, 0, (LONG_PTR)pvtbl);
- SetClassLongPtr(tmp, sizeof(void*), (LONG_PTR)app);
DestroyWindow(tmp);
return MAKEINTATOM(classatom);
}
void
-ALF_UnregisterWindowClass(ALFAPP app, LPCTSTR className)
+ALF_UnregisterWindowClass(HINSTANCE hinstance, LPCTSTR className)
{
- HWND tmp = CreateWindowEx(0, className, TEXT("dummy"), 0, 0, 0, 0, 0, NULL, 0, app->hInstance, 0);
+ HWND tmp = CreateWindowEx(0, className, TEXT("dummy"), 0, 0, 0, 0, 0, NULL, 0, hinstance, 0);
ALFWindowVTable *pvtbl = (ALFWindowVTable*)GetClassLongPtr(tmp, 0);
DestroyWindow(tmp);
ALF_Free(pvtbl);
- UnregisterClass(className, app->hInstance);
+ UnregisterClass(className, hinstance);
}
-HWND ALF_InstantiateWindow(ALFAPP app, LPCTSTR className, HWND hwndParent, void *closure)
+HWND ALF_InstantiateWindow(HINSTANCE hinstance, LPCTSTR className, HWND hwndParent, void *closure)
{
return CreateWindowEx(0,
className,
@@ -477,7 +490,7 @@ HWND ALF_InstantiateWindow(ALFAPP app, LPCTSTR className, HWND hwndParent, void
300, 100, //FIXME
hwndParent,
NULL,
- app->hInstance,
+ hinstance,
&closure);
}
@@ -487,12 +500,6 @@ ALF_DestroyWindow(HWND win)
DestroyWindow(win);
}
-ALFAPP
-ALF_ApplicationFromWindow(HWND hwnd)
-{
- return (ALFAPP)SendMessage(hwnd, ALF_WM_GETAPPLICATION, 0, 0);
-}
-
BOOL
ALF_PreTranslateMessage(HWND hwnd, MSG *message)
{
@@ -744,7 +751,7 @@ ALF_ShouldMessageBubble(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
if (!GetParent(hwnd))
return FALSE;
- return msg == ALF_WM_GETAPPLICATION || msg == ALF_WM_CENTIPOINTTOPX
+ return msg == ALF_WM_CENTIPOINTTOPX
|| msg == WM_COMMAND || msg == WM_NOTIFY
|| msg == WM_MEASUREITEM || msg == WM_DRAWITEM
|| msg == WM_CTLCOLORBTN || msg == WM_CTLCOLOREDIT
diff --git a/alf/alf.h b/alf/alf.h
index f5e3b26..b9fe0be 100644
--- a/alf/alf.h
+++ b/alf/alf.h
@@ -48,7 +48,6 @@ typedef struct {
#define ALF_WM_GETMODALRESULT (ALF_WM__BASE + 8)
#define ALF_WM_CENTIPOINTTOPX (ALF_WM__BASE + 9)
#define ALF_WM_SETFOCUS (ALF_WM__BASE + 10)
-#define ALF_WM_GETAPPLICATION (ALF_WM__BASE + 11)
#define ALF_WM_APPLYSIZE (ALF_WM__BASE + 12)
#define ALF_WM_GETLAYOUTPARAMS (ALF_WM__BASE + 13)
#define ALF_WM_SETLAYOUTPARAMS (ALF_WM__BASE + 14)
@@ -72,8 +71,6 @@ typedef struct {
UINT margins[4];
} ALFWidgetLayoutParams;
-typedef struct ALFAppPriv *ALFAPP;
-
typedef enum {
ALF_DPI_AWARENESS_UNAWARE,
ALF_DPI_AWARENESS_SYSTEM_AWARE,
@@ -83,11 +80,11 @@ typedef enum {
void
ALF_SetDpiAwareness(ALFDpiAwareness awareness);
-ALFAPP
-ALF_CreateApplication(HINSTANCE hInstance);
+void
+ALF_Initialize(void);
void
-ALF_TeardownApplication(ALFAPP app);
+ALF_UnInitialize(void);
void *
ALF_Alloc(SIZE_T nmemb, SIZE_T size);
@@ -102,20 +99,17 @@ void
ALF_Free(const void *p);
LPTSTR
-ALF_RegisterWindowClass(ALFAPP app, const ALFWindowClassParams *params);
+ALF_RegisterWindowClass(HINSTANCE instance, const ALFWindowClassParams *params);
void
-ALF_UnregisterWindowClass(ALFAPP app, LPCTSTR className);
+ALF_UnregisterWindowClass(HINSTANCE instance, LPCTSTR className);
HWND
-ALF_InstantiateWindow(ALFAPP app, LPCTSTR className, HWND hwndParent, void *closure);
+ALF_InstantiateWindow(HINSTANCE instance, LPCTSTR className, HWND hwndParent, void *closure);
void
ALF_DestroyWindow(HWND win);
-ALFAPP
-ALF_ApplicationFromWindow(HWND hwnd);
-
BOOL
ALF_PreTranslateMessage(HWND hwnd, MSG *message);
diff --git a/alf/alfcombobox.cpp b/alf/alfcombobox.cpp
index 0444b14..4624f3a 100644
--- a/alf/alfcombobox.cpp
+++ b/alf/alfcombobox.cpp
@@ -1,7 +1,17 @@
#include "alfpriv.h"
+// Win32s doesn't like using the original message numbers for custom messages
+#define ALF_CB_INSERTSTRING (ALF_WM__BASE + 200)
+#define ALF_CB_ADDSTRING (ALF_WM__BASE + 201)
+#define ALF_CB_GETCURSEL (ALF_WM__BASE + 202)
+#define ALF_CB_SETCURSEL (ALF_WM__BASE + 203)
+#define ALF_CB_GETLBTEXTLEN (ALF_WM__BASE + 204)
+#define ALF_CB_GETLBTEXT (ALF_WM__BASE + 205)
+#define ALF_CB_DELETESTRING (ALF_WM__BASE + 206)
+
+TCHAR *_alf_comboClass = NULL;
+
typedef struct {
- ALFAPP app;
DWORD comboStyle;
} ALFComboCreateParams;
@@ -38,12 +48,6 @@ ALF__ComboItemHeight(HWND hwnd)
static LRESULT CALLBACK
ALF__ComboWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
- if (uMsg == WM_NCCREATE) {
- ALFComboCreateParams *params = (ALFComboCreateParams*)((CREATESTRUCT*)lParam)->lpCreateParams;
-
- SetWindowLongPtr(hwnd, 0, (LONG_PTR)params->app);
- }
-
HWND hwndChild = (HWND)GetWindowLongPtr(hwnd, 0);
if (uMsg == WM_CREATE) {
@@ -69,7 +73,7 @@ ALF__ComboWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
if (uMsg == WM_SETTEXT && hwndChild) {
LRESULT index = SendMessage(hwndChild, CB_FINDSTRINGEXACT, (WPARAM)-1, lParam);
if (index >= 0) {
- SendMessage(hwnd, CB_SETCURSEL, (WPARAM)index, 0);
+ SendMessage(hwnd, ALF_CB_SETCURSEL, (WPARAM)index, 0);
} else {
return SendMessage(hwndChild, WM_SETTEXT, wParam, lParam);
}
@@ -104,16 +108,19 @@ ALF__ComboWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
if (uMsg == WM_GETFONT && hwndChild) {
return SendMessage(hwndChild, WM_GETFONT, wParam, lParam);
}
- if (uMsg == CB_ADDSTRING && hwndChild) {
+ if ((uMsg == ALF_CB_ADDSTRING || uMsg == CB_ADDSTRING) && hwndChild) {
return SendMessage(hwndChild, CB_ADDSTRING, wParam, lParam);
}
- if (uMsg == CB_INSERTSTRING && hwndChild) {
+ if ((uMsg == ALF_CB_INSERTSTRING || uMsg == CB_INSERTSTRING) && hwndChild) {
return SendMessage(hwndChild, CB_INSERTSTRING, wParam, lParam);
}
- if (uMsg == CB_GETCURSEL && hwndChild) {
+ if ((uMsg == ALF_CB_DELETESTRING || uMsg == CB_DELETESTRING) && hwndChild) {
+ return SendMessage(hwndChild, CB_DELETESTRING, wParam, lParam);
+ }
+ if ((uMsg == ALF_CB_GETCURSEL || uMsg == CB_GETCURSEL) && hwndChild) {
return SendMessage(hwndChild, CB_GETCURSEL, wParam, lParam);
}
- if (uMsg == CB_SETCURSEL && hwndChild) {
+ if ((uMsg == ALF_CB_SETCURSEL || uMsg == CB_SETCURSEL) && hwndChild) {
LRESULT curSel = SendMessage(hwndChild, CB_GETCURSEL, wParam, lParam);
if ((WPARAM)curSel != wParam) {
LRESULT newSel = SendMessage(hwndChild, CB_SETCURSEL, wParam, lParam);
@@ -121,10 +128,10 @@ ALF__ComboWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
return newSel;
}
}
- if (uMsg == CB_GETLBTEXTLEN && hwndChild) {
+ if ((uMsg == ALF_CB_GETLBTEXTLEN || uMsg == CB_GETLBTEXTLEN) && hwndChild) {
return SendMessage(hwndChild, CB_GETLBTEXTLEN, wParam, lParam);
}
- if (uMsg == CB_GETLBTEXT && hwndChild) {
+ if ((uMsg == ALF_CB_GETLBTEXT || uMsg == CB_GETLBTEXT) && hwndChild) {
return SendMessage(hwndChild, CB_GETLBTEXT, wParam, lParam);
}
@@ -264,7 +271,7 @@ ALF__ComboWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
void
-ALF_RegisterComboClass(ALFAPP app)
+ALF_RegisterComboClass(void)
{
WNDCLASS cls;
ZeroMemory(&cls, sizeof(cls));
@@ -272,7 +279,7 @@ ALF_RegisterComboClass(ALFAPP app)
TCHAR classNameBuf[256];
ALF_BuildRandomClassName(TEXT("ALFComboBox"), classNameBuf, 256);
- cls.hInstance = app->hInstance;
+ cls.hInstance = ALF_HINSTANCE;
cls.hCursor = LoadCursor(NULL, (LPTSTR)IDC_ARROW);
if (LOBYTE(LOWORD(GetVersion())) >= 4) {
cls.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
@@ -288,18 +295,17 @@ ALF_RegisterComboClass(ALFAPP app)
if (!classatom)
MessageBox(NULL, TEXT("FATAL: Could not register Combo class"), NULL, MB_OK);
- app->comboClass = MAKEINTATOM(classatom);
+ _alf_comboClass = MAKEINTATOM(classatom);
}
static HWND
ALF_InternalAddComboBox(HWND win, WORD id, UINT x, UINT y, DWORD style, const TCHAR *defaultText)
{
ALFComboCreateParams cp;
- cp.app = ALF_ApplicationFromWindow(win);
cp.comboStyle = style;
HWND hwndCombo = CreateWindowEx(WS_EX_CONTROLPARENT,
- cp.app->comboClass,
+ _alf_comboClass,
TEXT(""),
WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN,
0, 0, 0, 0,
@@ -340,7 +346,7 @@ ALF_AddSelectionOnlyComboBox(HWND win, WORD id, UINT x, UINT y)
int /* index */
ALF_ComboBoxAddString(HWND combo, const TCHAR *text)
{
- return (int)SendMessage(combo, CB_ADDSTRING, 0, (LPARAM)text);
+ return (int)SendMessage(combo, ALF_CB_ADDSTRING, 0, (LPARAM)text);
}
TCHAR *
@@ -352,28 +358,28 @@ ALF_ComboBoxCurrentText(HWND combo)
void
ALF_ComboBoxSetText(HWND combo, const TCHAR *text)
{
- ALF_SetText(combo, text);
+ ALF_SetText(combo, text);
}
int
ALF_ComboBoxCurrentIndex(HWND combo)
{
- return (int)SendMessage(combo, CB_GETCURSEL, 0, 0);
+ return (int)SendMessage(combo, ALF_CB_GETCURSEL, 0, 0);
}
void
ALF_ComboBoxSetCurrentIndex(HWND combo, int index)
{
- SendMessage(combo, CB_SETCURSEL, (WPARAM)index, 0);
+ SendMessage(combo, ALF_CB_SETCURSEL, (WPARAM)index, 0);
}
TCHAR * // free with ALF_Free
ALF_ComboBoxStringForIndex(HWND combo, int index)
{
- int len = (int)SendMessage(combo, CB_GETLBTEXTLEN, (WPARAM)index, 0);
+ int len = (int)SendMessage(combo, ALF_CB_GETLBTEXTLEN, (WPARAM)index, 0);
if (len > 0) {
TCHAR* buf = ALF_New(TCHAR, len + 1);
- if (SendMessage(combo, CB_GETLBTEXT, (WPARAM)index, (LPARAM)buf)) {
+ if (SendMessage(combo, ALF_CB_GETLBTEXT, (WPARAM)index, (LPARAM)buf)) {
return buf;
} else {
ALF_Free(buf);
@@ -386,11 +392,11 @@ ALF_ComboBoxStringForIndex(HWND combo, int index)
void
ALF_ComboBoxInsertString(HWND combo, int index, const TCHAR *text)
{
- SendMessage(combo, CB_INSERTSTRING, (WPARAM)index, (LPARAM)text);
+ SendMessage(combo, ALF_CB_INSERTSTRING, (WPARAM)index, (LPARAM)text);
}
void
ALF_ComboBoxRemoveString(HWND combo, int index)
{
- SendMessage(combo, CB_DELETESTRING, (WPARAM)index, 0);
+ SendMessage(combo, ALF_CB_DELETESTRING, (WPARAM)index, 0);
}
diff --git a/alf/alfcompat.h b/alf/alfcompat.h
index e0faf62..0d5a7d4 100644
--- a/alf/alfcompat.h
+++ b/alf/alfcompat.h
@@ -8,6 +8,9 @@
#define WM_DPICHANGED 0x02E0
#endif
+extern "C" IMAGE_DOS_HEADER __ImageBase;
+#define ALF_HINSTANCE ((HINSTANCE)&__ImageBase)
+
typedef LRESULT (CALLBACK *ALF_COMPAT_SUBCLASSPROC)(HWND,UINT,WPARAM,LPARAM,UINT_PTR,DWORD_PTR);
typedef struct {
diff --git a/alf/alfpanel.cpp b/alf/alfpanel.cpp
index b70dbf9..58f933e 100644
--- a/alf/alfpanel.cpp
+++ b/alf/alfpanel.cpp
@@ -1,14 +1,14 @@
#include "alfpriv.h"
+TCHAR *_alf_panelClass = NULL;
+
typedef struct {
- ALFAPP app;
ALFLayout layout;
} ALFPanelPriv;
static void
-ALF_Panel_IntializePriv(ALFPanelPriv *priv, ALFAPP app)
+ALF_Panel_IntializePriv(ALFPanelPriv *priv)
{
- priv->app = app;
ALF_Layout_Init(&priv->layout);
}
@@ -24,8 +24,7 @@ ALF__PanelWindowProc(HWND window, UINT msg, WPARAM wparam, LPARAM lparam)
if (msg == WM_NCCREATE) {
ALFPanelPriv *p = ALF_New(ALFPanelPriv, 1);
- ALFAPP app = (ALFAPP)(((CREATESTRUCT*)lparam)->lpCreateParams);
- ALF_Panel_IntializePriv(p, app);
+ ALF_Panel_IntializePriv(p);
SetWindowLongPtr(window, 0, (LONG_PTR)p);
}
@@ -53,7 +52,7 @@ ALF__PanelWindowProc(HWND window, UINT msg, WPARAM wparam, LPARAM lparam)
}
void
-ALF_RegisterPanelClass(ALFAPP app)
+ALF_RegisterPanelClass(void)
{
WNDCLASS cls;
ZeroMemory(&cls, sizeof(cls));
@@ -61,7 +60,7 @@ ALF_RegisterPanelClass(ALFAPP app)
TCHAR classNameBuf[256];
ALF_BuildRandomClassName(TEXT("ALFPanel"), classNameBuf, 256);
- cls.hInstance = app->hInstance;
+ cls.hInstance = ALF_HINSTANCE;
cls.hCursor = LoadCursor(NULL, (LPTSTR)IDC_ARROW);
if (LOBYTE(LOWORD(GetVersion())) >= 4) {
cls.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
@@ -77,23 +76,21 @@ ALF_RegisterPanelClass(ALFAPP app)
if (!classatom)
MessageBox(NULL, TEXT("FATAL: Could not register Combo class"), NULL, MB_OK);
- app->panelClass = MAKEINTATOM(classatom);
+ _alf_panelClass = MAKEINTATOM(classatom);
}
HWND
ALF_AddPanel(HWND parent, WORD id, UINT x, UINT y)
{
- ALFAPP app = ALF_ApplicationFromWindow(parent);
-
HWND hwndPanel = CreateWindowEx(WS_EX_CONTROLPARENT,
- app->panelClass,
+ _alf_panelClass,
TEXT(""),
WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN,
0, 0, 0, 0,
parent,
(HMENU)(int)id,
- (HINSTANCE)GetWindowLongPtr(parent, GWLP_HINSTANCE),
- (void*)app);
+ ALF_HINSTANCE,
+ NULL);
ALFWidgetLayoutParams p;
ZeroMemory(&p, sizeof(p));
diff --git a/alf/alfpriv.h b/alf/alfpriv.h
index 61d7b39..c3a7fb9 100644
--- a/alf/alfpriv.h
+++ b/alf/alfpriv.h
@@ -18,7 +18,6 @@
#include "alflayout.h"
typedef struct {
- ALFAPP app;
ALFWindowVTable *vtbl;
void *closure;
ALFWindowFonts fonts;
@@ -28,12 +27,9 @@ typedef struct {
HWND hwndFocus;
} ALFWindowPriv;
-struct ALFAppPriv {
- HINSTANCE hInstance;
- TCHAR *comboClass;
- TCHAR *panelClass;
- TCHAR *spacerClass;
-};
+extern TCHAR *_alf_comboClass;
+extern TCHAR *_alf_panelClass;
+extern TCHAR *_alf_spacerClass;
int
ALF_CentipointsToPxPriv(ALFWindowPriv *priv, int cptValue);
@@ -48,13 +44,13 @@ BOOL
ALF_PreTranslateMessagePriv(HWND win, ALFWindowPriv *priv, MSG *message);
void
-ALF_RegisterComboClass(ALFAPP app);
+ALF_RegisterComboClass(void);
void
-ALF_RegisterPanelClass(ALFAPP app);
+ALF_RegisterPanelClass(void);
void
-ALF_RegisterSpacerClass(ALFAPP app);
+ALF_RegisterSpacerClass(void);
void
ALF_BuildRandomClassName(const TCHAR *prefix, TCHAR *buf, DWORD cchBuf);
diff --git a/alf/alfspacer.cpp b/alf/alfspacer.cpp
index 545dfbc..da18600 100644
--- a/alf/alfspacer.cpp
+++ b/alf/alfspacer.cpp
@@ -1,7 +1,9 @@
#include "alfpriv.h"
+TCHAR *_alf_spacerClass = NULL;
+
void
-ALF_RegisterSpacerClass(ALFAPP app)
+ALF_RegisterSpacerClass(void)
{
WNDCLASS cls;
ZeroMemory(&cls, sizeof(cls));
@@ -9,7 +11,7 @@ ALF_RegisterSpacerClass(ALFAPP app)
TCHAR classNameBuf[256];
ALF_BuildRandomClassName(TEXT("ALFSpacer"), classNameBuf, 256);
- cls.hInstance = app->hInstance;
+ cls.hInstance = ALF_HINSTANCE;
cls.hCursor = LoadCursor(NULL, (LPTSTR)IDC_ARROW);
if (LOBYTE(LOWORD(GetVersion())) >= 4) {
cls.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
@@ -25,23 +27,21 @@ ALF_RegisterSpacerClass(ALFAPP app)
if (!classatom)
MessageBox(NULL, TEXT("FATAL: Could not register spacer class"), NULL, MB_OK);
- app->spacerClass = MAKEINTATOM(classatom);
+ _alf_spacerClass = MAKEINTATOM(classatom);
}
HWND
ALF_AddSpacer(HWND parent, WORD id, UINT x, UINT y, UINT cptWidth, UINT cptHeight, DWORD layoutFlags)
{
- ALFAPP app = ALF_ApplicationFromWindow(parent);
-
HWND hwndSpacer = CreateWindowEx(0,
- app->spacerClass,
+ _alf_spacerClass,
TEXT(""),
WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN,
0, 0, 0, 0,
parent,
(HMENU)(int)id,
- (HINSTANCE)GetWindowLongPtr(parent, GWLP_HINSTANCE),
- (void*)app);
+ ALF_HINSTANCE,
+ NULL);
ALFWidgetLayoutParams p;
ZeroMemory(&p, sizeof(p));