Alexandre Julliard : user: Added fast 16->
32 mapping for the WM_DDE* messages.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri May 26 13:54:57 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 8b4281a7c8eddb198add492536c14fa5913755e2
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=8b4281a7c8eddb198add492536c14fa5913755e2
Author: Alexandre Julliard <julliard at winehq.org>
Date: Fri May 26 13:42:00 2006 +0200
user: Added fast 16->32 mapping for the WM_DDE* messages.
---
dlls/user/winproc.c | 111 ++++++++++++++++++++++++---------------------------
1 files changed, 52 insertions(+), 59 deletions(-)
diff --git a/dlls/user/winproc.c b/dlls/user/winproc.c
index c52273b..d36f192 100644
--- a/dlls/user/winproc.c
+++ b/dlls/user/winproc.c
@@ -802,65 +802,6 @@ static INT WINPROC_MapMsg16To32A( HWND h
case WM_SIZECLIPBOARD:
FIXME_(msg)("message %04x needs translation\n",msg16 );
return -1;
- case WM_DDE_INITIATE:
- case WM_DDE_TERMINATE:
- case WM_DDE_UNADVISE:
- case WM_DDE_REQUEST:
- *pwparam32 = (WPARAM)WIN_Handle32(wParam16);
- return 0;
- case WM_DDE_ADVISE:
- case WM_DDE_DATA:
- case WM_DDE_POKE:
- {
- HANDLE16 lo16;
- ATOM hi;
- UINT lo32 = 0;
-
- *pwparam32 = (WPARAM)WIN_Handle32(wParam16);
- lo16 = LOWORD(*plparam);
- hi = HIWORD(*plparam);
- if (lo16 && !(lo32 = convert_handle_16_to_32(lo16, GMEM_DDESHARE)))
- return -1;
- *plparam = PackDDElParam(msg16, lo32, hi);
- }
- return 0; /* FIXME don't know how to free allocated memory (handle) !! */
- case WM_DDE_ACK:
- {
- UINT lo, hi;
- int flag = 0;
- char buf[2];
-
- *pwparam32 = (WPARAM)WIN_Handle32(wParam16);
-
- lo = LOWORD(*plparam);
- hi = HIWORD(*plparam);
-
- if (GlobalGetAtomNameA(hi, buf, 2) > 0) flag |= 1;
- if (GlobalSize16(hi) != 0) flag |= 2;
- switch (flag)
- {
- case 0:
- if (hi)
- {
- MESSAGE("DDE_ACK: neither atom nor handle!!!\n");
- hi = 0;
- }
- break;
- case 1:
- break; /* atom, nothing to do */
- case 3:
- MESSAGE("DDE_ACK: %x both atom and handle... choosing handle\n", hi);
- /* fall thru */
- case 2:
- hi = convert_handle_16_to_32(hi, GMEM_DDESHARE);
- break;
- }
- *plparam = PackDDElParam(WM_DDE_ACK, lo, hi);
- }
- return 0; /* FIXME don't know how to free allocated memory (handle) !! */
- case WM_DDE_EXECUTE:
- *plparam = convert_handle_16_to_32(*plparam, GMEM_DDESHARE);
- return 0; /* FIXME don't know how to free allocated memory (handle) !! */
default: /* No translation needed */
return 0;
}
@@ -2366,6 +2307,58 @@ LRESULT WINPROC_CallProc16To32A( winproc
*result = MAKELONG( HMENU_16(next.hmenuNext), HWND_16(next.hwndNext) );
}
break;
+ case WM_DDE_INITIATE:
+ case WM_DDE_TERMINATE:
+ case WM_DDE_UNADVISE:
+ case WM_DDE_REQUEST:
+ ret = callback( hwnd32, msg, (WPARAM)WIN_Handle32(wParam), lParam, result, arg );
+ break;
+ case WM_DDE_ADVISE:
+ case WM_DDE_DATA:
+ case WM_DDE_POKE:
+ {
+ HANDLE16 lo16 = LOWORD(lParam);
+ UINT lo32 = 0;
+ if (lo16 && !(lo32 = convert_handle_16_to_32(lo16, GMEM_DDESHARE))) break;
+ lParam = PackDDElParam( msg, lo32, HIWORD(lParam) );
+ ret = callback( hwnd32, msg, (WPARAM)WIN_Handle32(wParam), lParam, result, arg );
+ }
+ break; /* FIXME don't know how to free allocated memory (handle) !! */
+ case WM_DDE_ACK:
+ {
+ UINT lo = LOWORD(lParam);
+ UINT hi = HIWORD(lParam);
+ int flag = 0;
+ char buf[2];
+
+ if (GlobalGetAtomNameA(hi, buf, 2) > 0) flag |= 1;
+ if (GlobalSize16(hi) != 0) flag |= 2;
+ switch (flag)
+ {
+ case 0:
+ if (hi)
+ {
+ MESSAGE("DDE_ACK: neither atom nor handle!!!\n");
+ hi = 0;
+ }
+ break;
+ case 1:
+ break; /* atom, nothing to do */
+ case 3:
+ MESSAGE("DDE_ACK: %x both atom and handle... choosing handle\n", hi);
+ /* fall thru */
+ case 2:
+ hi = convert_handle_16_to_32(hi, GMEM_DDESHARE);
+ break;
+ }
+ lParam = PackDDElParam( WM_DDE_ACK, lo, hi );
+ ret = callback( hwnd32, msg, (WPARAM)WIN_Handle32(wParam), lParam, result, arg );
+ }
+ break; /* FIXME don't know how to free allocated memory (handle) !! */
+ case WM_DDE_EXECUTE:
+ lParam = convert_handle_16_to_32( lParam, GMEM_DDESHARE );
+ ret = callback( hwnd32, msg, wParam, lParam, result, arg );
+ break; /* FIXME don't know how to free allocated memory (handle) !! */
default:
{
UINT msg32;
More information about the wine-cvs
mailing list