diff options
Diffstat (limited to 'alf/alfpanel.cpp')
| -rw-r--r-- | alf/alfpanel.cpp | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/alf/alfpanel.cpp b/alf/alfpanel.cpp index 8583d2e..b8ef8b3 100644 --- a/alf/alfpanel.cpp +++ b/alf/alfpanel.cpp @@ -18,6 +18,13 @@ ALF_Panel_ClearPriv(ALFPanelPriv *priv) ALF_Layout_Clear(&priv->layout); } +static void +ALF_Panel_Paint(ALFPanelPriv *priv, HWND hwnd, HDC dc, RECT *r) +{ + (void)priv; + ALF_Compat_DrawThemeParentBackground(hwnd, dc, r); +} + static LRESULT WINAPI ALF__PanelWindowProc(HWND window, UINT msg, WPARAM wparam, LPARAM lparam) { @@ -38,15 +45,28 @@ ALF__PanelWindowProc(HWND window, UINT msg, WPARAM wparam, LPARAM lparam) } if (msg == WM_ERASEBKGND) { - HDC hdc = (HDC)wparam; + return TRUE; + } + if (msg == WM_PRINTCLIENT) { RECT r = { 0, 0, 0, 0 }; GetClientRect(window, &r); - ALF_Compat_DrawThemeParentBackground(window, hdc, &r); + ALF_Panel_Paint(priv, window, (HDC)wparam, &r); return TRUE; } + if (msg == WM_PAINT) { + PAINTSTRUCT ps; + HDC dc = BeginPaint(window, &ps); + + ALF_Panel_Paint(priv, window, dc, &ps.rcPaint); + + EndPaint(window, &ps); + + return 0; + } + if (ALF_ShouldMessageBubble(window, msg, wparam, lparam)) return SendMessage(GetParent(window), msg, wparam, lparam); @@ -72,12 +92,6 @@ ALF_RegisterPanelClass(void) cls.hInstance = ALF_HINSTANCE; cls.hCursor = LoadCursor(NULL, (LPTSTR)IDC_ARROW); - if (LOBYTE(LOWORD(GetVersion())) >= 4) { - cls.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1); - } else { - // NT 3.x has white dialog backgrounds - cls.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); - } cls.lpszClassName = classNameBuf; cls.cbWndExtra = sizeof(void*); cls.lpfnWndProc = ALF__PanelWindowProc; |
