Implemented WM_PRINTCLIENT on Window and cleaned up the WM_CTLCOLOR*** message handler; both are on the Windows backend.

This commit is contained in:
Pietro Gagliardi 2014-08-28 15:38:47 -04:00
parent 4d8911fe7e
commit 555b6ebcbd
2 changed files with 17 additions and 14 deletions

View File

@ -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);

View File

@ -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";