summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--redo/common_windows.c18
-rw-r--r--redo/window_windows.c13
2 files changed, 17 insertions, 14 deletions
diff --git a/redo/common_windows.c b/redo/common_windows.c
index d89cb21..13997c7 100644
--- a/redo/common_windows.c
+++ b/redo/common_windows.c
@@ -79,8 +79,6 @@ static LRESULT forwardNotify(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
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);
@@ -90,16 +88,11 @@ BOOL sharedWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *
return TRUE;
case WM_CTLCOLORSTATIC:
case WM_CTLCOLORBTN:
- exstyle = (DWORD) GetWindowLongPtrW((HWND) lParam, GWL_EXSTYLE);
- // TODO clean this up
-{// if ((exstyle & WS_EX_TRANSPARENT) != 0) {
- if (SetBkMode((HDC) wParam, TRANSPARENT) == 0)
- xpanic("error setting transparent background mode to Labels", GetLastError());
- paintControlBackground((HWND) lParam, (HDC) wParam);
- *lResult = (LRESULT) hollowBrush;
- return TRUE;
- }
- return FALSE;
+ if (SetBkMode((HDC) wParam, TRANSPARENT) == 0)
+ xpanic("error setting transparent background mode to Labels", GetLastError());
+ paintControlBackground((HWND) lParam, (HDC) wParam);
+ *lResult = (LRESULT) hollowBrush;
+ return TRUE;
}
return FALSE;
}
@@ -112,7 +105,6 @@ void paintControlBackground(HWND hwnd, HDC dc)
int saved;
WCHAR classname[128] = L""; // more than enough to avoid collisions
- // TODO implement WM_PRINTCLIENT in window_windows.c
parent = hwnd;
do {
parent = GetParent(parent);
diff --git a/redo/window_windows.c b/redo/window_windows.c
index 7790bfe..2d047b0 100644
--- a/redo/window_windows.c
+++ b/redo/window_windows.c
@@ -5,6 +5,8 @@
#define windowclass L"gouiwindow"
+#define windowBackground ((HBRUSH) (COLOR_BTNFACE + 1))
+
static LRESULT CALLBACK windowWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
void *data;
@@ -17,6 +19,15 @@ static LRESULT CALLBACK windowWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARA
if (sharedWndProc(hwnd, uMsg, wParam, lParam, &lResult))
return lResult;
switch (uMsg) {
+ case WM_PRINTCLIENT:
+ // the return value of this message is not documented
+ // just to be safe, do this first, returning its value later
+ lResult = DefWindowProcW(hwnd, uMsg, wParam, lParam);
+ if (GetClientRect(hwnd, &r) == 0)
+ xpanic("error getting client rect for Window in WM_PRINTCLIENT", GetLastError());
+ if (FillRect((HDC) wParam, &r, windowBackground) == 0)
+ xpanic("error filling WM_PRINTCLIENT DC with window background color", GetLastError());
+ return lResult;
case WM_SIZE:
if (GetClientRect(hwnd, &r) == 0)
xpanic("error getting client rect for Window in WM_SIZE", GetLastError());
@@ -41,7 +52,7 @@ DWORD makeWindowWindowClass(char **errmsg)
wc.hInstance = hInstance;
wc.hIcon = hDefaultIcon;
wc.hCursor = hArrowCursor;
- wc.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1);
+ wc.hbrBackground = windowBackground;
wc.lpszClassName = windowclass;
if (RegisterClassW(&wc) == 0) {
*errmsg = "error registering Window window class";