Alexandre Julliard : user: Added fast 16->32 mapping for WM_MDIACTIVATE, WM_MDIGETACTIVE and WM_MDISETMENU.

Alexandre Julliard julliard at wine.codeweavers.com
Fri May 26 13:54:57 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 394775187f9e20449de572b3fe8b852e51fd3eeb
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=394775187f9e20449de572b3fe8b852e51fd3eeb

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri May 26 13:40:02 2006 +0200

user: Added fast 16->32 mapping for WM_MDIACTIVATE, WM_MDIGETACTIVE and WM_MDISETMENU.

---

 dlls/user/winproc.c |   57 +++++++++++++++++----------------------------------
 1 files changed, 19 insertions(+), 38 deletions(-)

diff --git a/dlls/user/winproc.c b/dlls/user/winproc.c
index 3488e0a..c52273b 100644
--- a/dlls/user/winproc.c
+++ b/dlls/user/winproc.c
@@ -767,15 +767,6 @@ static INT WINPROC_MapMsg16To32A( HWND h
     case WM_ASKCBFORMATNAME:
         *plparam = (LPARAM)MapSL(*plparam);
         return 0;
-    case WM_MDIGETACTIVE:
-        *plparam = (LPARAM)HeapAlloc( GetProcessHeap(), 0, sizeof(BOOL) );
-        *(BOOL*)(*plparam) = 0;
-        return 1;
-    case WM_MDISETMENU:
-        if(wParam16) *pmsg32=WM_MDIREFRESHMENU;
-        *pwparam32 = (WPARAM)HMENU_32(LOWORD(*plparam));
-        *plparam   = (LPARAM)HMENU_32(HIWORD(*plparam));
-        return 0;
     case WM_MENUCHAR:
         *pwparam32 = MAKEWPARAM( wParam16, LOWORD(*plparam) );
         *plparam   = (LPARAM)HMENU_32(HIWORD(*plparam));
@@ -791,15 +782,6 @@ static INT WINPROC_MapMsg16To32A( HWND h
         else *pwparam32 = MAKEWPARAM( wParam16, LOWORD(*plparam) );
         *plparam   = (LPARAM)HMENU_32(HIWORD(*plparam));
         return 0;
-    case WM_MDIACTIVATE:
-        if( *plparam )
-        {
-            *pwparam32 = (WPARAM)WIN_Handle32( HIWORD(*plparam) );
-            *plparam   = (LPARAM)WIN_Handle32( LOWORD(*plparam) );
-        }
-        else /* message sent to MDI client */
-            *pwparam32 = wParam16;
-        return 0;
     case WM_PARENTNOTIFY:
         if ((wParam16 == WM_CREATE) || (wParam16 == WM_DESTROY))
         {
@@ -885,25 +867,6 @@ static INT WINPROC_MapMsg16To32A( HWND h
 }
 
 
-/**********************************************************************
- *	     WINPROC_UnmapMsg16To32A
- *
- * Unmap a message that was mapped from 16- to 32-bit Ansi.
- */
-static LRESULT WINPROC_UnmapMsg16To32A( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam,
-                                        LRESULT result )
-{
-    switch(msg)
-    {
-    case WM_MDIGETACTIVE:
-        result = MAKELONG( LOWORD(result), (BOOL16)(*(BOOL *)lParam) );
-        HeapFree( GetProcessHeap(), 0, (BOOL *)lParam );
-        break;
-    }
-    return result;
-}
-
-
 static HANDLE16 convert_handle_32_to_16(UINT src, unsigned int flags)
 {
     HANDLE16    dst;
@@ -2241,6 +2204,25 @@ LRESULT WINPROC_CallProc16To32A( winproc
             MDICREATESTRUCT32Ato16( &cs, cs16 );
         }
         break;
+    case WM_MDIACTIVATE:
+        if (lParam)
+            ret = callback( hwnd32, msg, (WPARAM)WIN_Handle32( HIWORD(lParam) ),
+                            (LPARAM)WIN_Handle32( LOWORD(lParam) ), result, arg );
+        else /* message sent to MDI client */
+            ret = callback( hwnd32, msg, wParam, lParam, result, arg );
+        break;
+    case WM_MDIGETACTIVE:
+        {
+            BOOL maximized = FALSE;
+            ret = callback( hwnd32, msg, wParam, (LPARAM)&maximized, result, arg );
+            *result = MAKELRESULT( LOWORD(*result), maximized );
+        }
+        break;
+    case WM_MDISETMENU:
+        ret = callback( hwnd32, wParam ? WM_MDIREFRESHMENU : WM_MDISETMENU,
+                        (WPARAM)HMENU_32(LOWORD(lParam)), (LPARAM)HMENU_32(HIWORD(lParam)),
+                        result, arg );
+        break;
     case WM_GETMINMAXINFO:
         {
             MINMAXINFO16 *mmi16 = MapSL(lParam);
@@ -2391,7 +2373,6 @@ LRESULT WINPROC_CallProc16To32A( winproc
             if (WINPROC_MapMsg16To32A( hwnd32, msg, wParam, &msg32, &wParam32, &lParam ) != -1)
             {
                 ret = callback( hwnd32, msg32, wParam32, lParam, result, arg );
-                *result = WINPROC_UnmapMsg16To32A( hwnd32, msg32, wParam32, lParam, *result );
             }
         }
         break;




More information about the wine-cvs mailing list