win32u: Move default WM_CTL* window message implementation from user32.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
This commit is contained in:
Jacek Caban 2022-06-20 13:16:15 +02:00 committed by Alexandre Julliard
parent c7e0697e9c
commit 88870884a5
2 changed files with 44 additions and 12 deletions

View file

@ -161,18 +161,6 @@ static LRESULT DEFWND_DefWinProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPa
DEFWND_Print(hwnd, (HDC)wParam, lParam);
return 0;
case WM_CTLCOLORMSGBOX:
case WM_CTLCOLOREDIT:
case WM_CTLCOLORLISTBOX:
case WM_CTLCOLORBTN:
case WM_CTLCOLORDLG:
case WM_CTLCOLORSTATIC:
case WM_CTLCOLORSCROLLBAR:
return (LRESULT)DEFWND_ControlColor( (HDC)wParam, msg - WM_CTLCOLORMSGBOX );
case WM_CTLCOLOR:
return (LRESULT)DEFWND_ControlColor( (HDC)wParam, HIWORD(lParam) );
case WM_SYSCOMMAND:
return NC_HandleSysCommand( hwnd, wParam, lParam );

View file

@ -2261,6 +2261,38 @@ static LRESULT handle_nc_button_dbl_click( HWND hwnd, WPARAM wparam, LPARAM lpar
return 0;
}
static HBRUSH handle_control_color( HDC hdc, UINT type )
{
if (type == CTLCOLOR_SCROLLBAR)
{
HBRUSH hb = get_sys_color_brush( COLOR_SCROLLBAR );
COLORREF bk = get_sys_color( COLOR_3DHILIGHT );
NtGdiGetAndSetDCDword( hdc, NtGdiSetTextColor, get_sys_color( COLOR_3DFACE ), NULL );
NtGdiGetAndSetDCDword( hdc, NtGdiSetBkColor, bk, NULL );
/* if COLOR_WINDOW happens to be the same as COLOR_3DHILIGHT
* we better use 0x55aa bitmap brush to make scrollbar's background
* look different from the window background.
*/
if (bk == get_sys_color( COLOR_WINDOW )) return get_55aa_brush();
NtGdiUnrealizeObject( hb );
return hb;
}
NtGdiGetAndSetDCDword( hdc, NtGdiSetTextColor, get_sys_color( COLOR_WINDOWTEXT ), NULL );
if (type == CTLCOLOR_EDIT || type == CTLCOLOR_LISTBOX)
NtGdiGetAndSetDCDword( hdc, NtGdiSetBkColor, get_sys_color( COLOR_WINDOW ), NULL );
else
{
NtGdiGetAndSetDCDword( hdc, NtGdiSetBkColor, get_sys_color( COLOR_3DFACE ), NULL);
return get_sys_color_brush( COLOR_3DFACE );
}
return get_sys_color_brush( COLOR_WINDOW );
}
LRESULT default_window_proc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam, BOOL ansi )
{
LRESULT result = 0;
@ -2474,6 +2506,18 @@ LRESULT default_window_proc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam,
handle_set_cursor( hwnd, wparam, lparam );
break;
case WM_CTLCOLORMSGBOX:
case WM_CTLCOLOREDIT:
case WM_CTLCOLORLISTBOX:
case WM_CTLCOLORBTN:
case WM_CTLCOLORDLG:
case WM_CTLCOLORSTATIC:
case WM_CTLCOLORSCROLLBAR:
return (LRESULT)handle_control_color( (HDC)wparam, msg - WM_CTLCOLORMSGBOX );
case WM_CTLCOLOR:
return (LRESULT)handle_control_color( (HDC)wparam, HIWORD( lparam ));
case WM_SYSCOMMAND:
result = handle_sys_command( hwnd, wparam, lparam );
break;