Alexandre Julliard : user32: Split the handling of the 16-bit messages out of the scrollbar winproc.
Alexandre Julliard
julliard at winehq.org
Mon Dec 14 09:51:09 CST 2009
Module: wine
Branch: master
Commit: 11ed5da3fdbdc62ffedc745acadb03938390c71e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=11ed5da3fdbdc62ffedc745acadb03938390c71e
Author: Alexandre Julliard <julliard at winehq.org>
Date: Fri Dec 11 20:25:28 2009 +0100
user32: Split the handling of the 16-bit messages out of the scrollbar winproc.
---
dlls/user32/scroll.c | 51 ++++++++++++++++++++++++++++++++-----------------
1 files changed, 33 insertions(+), 18 deletions(-)
diff --git a/dlls/user32/scroll.c b/dlls/user32/scroll.c
index 52c350c..6ab1e56 100644
--- a/dlls/user32/scroll.c
+++ b/dlls/user32/scroll.c
@@ -1519,19 +1519,12 @@ static LRESULT ScrollBarWndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM
}
break;
- case SBM_SETPOS16:
case SBM_SETPOS:
return SetScrollPos( hwnd, SB_CTL, wParam, (BOOL)lParam );
- case SBM_GETPOS16:
case SBM_GETPOS:
return SCROLL_GetScrollPos(hwnd, SB_CTL);
- case SBM_SETRANGE16:
- if (wParam) message = SBM_SETRANGEREDRAW;
- wParam = LOWORD(lParam);
- lParam = HIWORD(lParam);
- /* fall through */
case SBM_SETRANGEREDRAW:
case SBM_SETRANGE:
{
@@ -1543,18 +1536,9 @@ static LRESULT ScrollBarWndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM
}
return 0;
- case SBM_GETRANGE16:
- {
- INT min, max;
-
- SCROLL_GetScrollRange(hwnd, SB_CTL, &min, &max);
- return MAKELRESULT(min, max);
- }
-
case SBM_GETRANGE:
return SCROLL_GetScrollRange(hwnd, SB_CTL, (LPINT)wParam, (LPINT)lParam);
- case SBM_ENABLE_ARROWS16:
case SBM_ENABLE_ARROWS:
return EnableScrollBar( hwnd, SB_CTL, wParam );
@@ -1592,11 +1576,42 @@ static LRESULT ScrollBarWndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM
/***********************************************************************
+ * ScrollBarWndProc_wrapper16
+ */
+static LRESULT ScrollBarWndProc_wrapper16( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL unicode )
+{
+ static const UINT msg16_offset = SBM_SETPOS16 - SBM_SETPOS;
+
+ switch (msg)
+ {
+ case SBM_SETPOS16:
+ case SBM_GETPOS16:
+ case SBM_ENABLE_ARROWS16:
+ msg -= msg16_offset;
+ break;
+ case SBM_SETRANGE16:
+ msg = wParam ? SBM_SETRANGEREDRAW : SBM_SETRANGE;
+ wParam = LOWORD(lParam);
+ lParam = HIWORD(lParam);
+ break;
+ case SBM_GETRANGE16:
+ {
+ INT min, max;
+ ScrollBarWndProc( hwnd, SBM_GETRANGE, (WPARAM)&min, (LPARAM)&max, FALSE );
+ return MAKELRESULT(min, max);
+ }
+ default:
+ return ScrollBarWndProc( hwnd, msg, wParam, lParam, unicode );
+ }
+ return ScrollBarWndProc( hwnd, msg, wParam, lParam, FALSE );
+}
+
+/***********************************************************************
* ScrollBarWndProcA
*/
static LRESULT WINAPI ScrollBarWndProcA( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
{
- return ScrollBarWndProc( hwnd, message, wParam, lParam, FALSE );
+ return ScrollBarWndProc_wrapper16( hwnd, message, wParam, lParam, FALSE );
}
@@ -1605,7 +1620,7 @@ static LRESULT WINAPI ScrollBarWndProcA( HWND hwnd, UINT message, WPARAM wParam,
*/
static LRESULT WINAPI ScrollBarWndProcW( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
{
- return ScrollBarWndProc( hwnd, message, wParam, lParam, TRUE );
+ return ScrollBarWndProc_wrapper16( hwnd, message, wParam, lParam, TRUE );
}
More information about the wine-cvs
mailing list