diff options
| author | Jonas Kümmerlin <jonas@kuemmerlin.eu> | 2019-04-29 22:10:17 +0200 |
|---|---|---|
| committer | Jonas Kümmerlin <jonas@kuemmerlin.eu> | 2019-04-29 22:10:17 +0200 |
| commit | ac07e9afb9ef67ae227966425f85c26613b7ea94 (patch) | |
| tree | 34e6307dc2d40366214de873a9f6689849226c2c /alf | |
| parent | d64290aaffd4721518747713929d79a78ba963f4 (diff) | |
remove app, use global variables instead
also some unrelated combobox fixes
Diffstat (limited to 'alf')
| -rw-r--r-- | alf/alf.cpp | 83 | ||||
| -rw-r--r-- | alf/alf.h | 18 | ||||
| -rw-r--r-- | alf/alfcombobox.cpp | 60 | ||||
| -rw-r--r-- | alf/alfcompat.h | 3 | ||||
| -rw-r--r-- | alf/alfpanel.cpp | 23 | ||||
| -rw-r--r-- | alf/alfpriv.h | 16 | ||||
| -rw-r--r-- | alf/alfspacer.cpp | 16 |
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 @@ -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)); |
