summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--alf/alftoplevel.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/alf/alftoplevel.cpp b/alf/alftoplevel.cpp
index 5cdd686..29e43cb 100644
--- a/alf/alftoplevel.cpp
+++ b/alf/alftoplevel.cpp
@@ -322,6 +322,24 @@ ALF_Toplevel_DefWindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
if (ret) {
return ret;
} else {
+ if (ALF_Compat_IsComCtlV6() && !ALF_Compat_IsVista()) {
+ // HACK! transparent checkbox background for comctl v6 on XP
+ // broken on every other version of windows, but not needed for Vista
+
+ WCHAR c[32] = {0};
+ GetClassNameW((HWND)lparam, c, sizeof(c)/sizeof(c[0]));
+
+ if (!lstrcmpW(c, WC_BUTTONW)) {
+ RECT rcClient;
+ GetClientRect((HWND)lparam, &rcClient);
+
+ ALF_Compat_DrawThemeParentBackground((HWND)lparam, (HDC)wparam, &rcClient);
+ SetBkColor((HDC)wparam, GetSysColor(COLOR_BTNFACE));
+ SetTextColor((HDC)wparam, GetSysColor(COLOR_BTNTEXT));
+ return (LRESULT)GetStockObject(HOLLOW_BRUSH);
+ }
+ }
+
SetBkColor((HDC)wparam, GetSysColor(COLOR_BTNFACE));
SetTextColor((HDC)wparam, GetSysColor(COLOR_BTNTEXT));
return (LRESULT)GetSysColorBrush(COLOR_BTNFACE);