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