Module: wine Branch: refs/heads/master Commit: 8b4281a7c8eddb198add492536c14fa5913755e2 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=8b4281a7c8eddb198add4925...
Author: Alexandre Julliard julliard@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;