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