From 5ca3f0f0f9ccdb9fd2301e0b8b7503302c1b83c4 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Thu, 14 Aug 2014 17:13:52 -0400 Subject: [PATCH] Made Labels on Windows transparent. --- redo/common_windows.c | 11 +++++++++++ redo/label_windows.go | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/redo/common_windows.c b/redo/common_windows.c index 153aa76..d5d7c72 100644 --- a/redo/common_windows.c +++ b/redo/common_windows.c @@ -80,6 +80,8 @@ static LRESULT forwardNotify(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) // TODO give this a better name BOOL sharedWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *lResult) { + DWORD exstyle; + switch (uMsg) { case WM_COMMAND: *lResult = forwardCommand(hwnd, uMsg, wParam, lParam); @@ -87,6 +89,15 @@ BOOL sharedWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT * case WM_NOTIFY: *lResult = forwardNotify(hwnd, uMsg, wParam, lParam); return TRUE; + case WM_CTLCOLORSTATIC: + exstyle = (DWORD) GetWindowLongPtrW((HWND) lParam, GWL_EXSTYLE); + if ((exstyle & WS_EX_TRANSPARENT) != 0) { + if (SetBkMode((HDC) wParam, TRANSPARENT) == 0) + xpanic("error setting transparent background mode to Labels", GetLastError()); + *lResult = (LRESULT) hollowBrush; + return TRUE; + } + return FALSE; } return FALSE; } diff --git a/redo/label_windows.go b/redo/label_windows.go index a37bc9d..7dc8723 100644 --- a/redo/label_windows.go +++ b/redo/label_windows.go @@ -18,7 +18,7 @@ func finishNewLabel(text string, standalone bool) *label { // SS_NOPREFIX avoids accelerator translation; SS_LEFTNOWORDWRAP clips text past the end // controls are vertically aligned to the top by default (thanks Xeek in irc.freenode.net/#winapi) C.SS_NOPREFIX | C.SS_LEFTNOWORDWRAP, - 0) + C.WS_EX_TRANSPARENT) l := &label{ _hwnd: hwnd, standalone: standalone,