Alexandre Julliard : user: Added fast 32-> 16 mapping for the WM_DDE* messages.

Alexandre Julliard julliard at wine.codeweavers.com
Fri May 26 13:55:01 CDT 2006


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri May 26 14:09:26 2006 +0200

user: Added fast 32->16 mapping for the WM_DDE* messages.

---

 dlls/user/winproc.c |  111 +++++++++++++++++++++++++--------------------------
 1 files changed, 55 insertions(+), 56 deletions(-)

diff --git a/dlls/user/winproc.c b/dlls/user/winproc.c
index c6c67a0..28eebb4 100644
--- a/dlls/user/winproc.c
+++ b/dlls/user/winproc.c
@@ -1026,62 +1026,6 @@ static INT WINPROC_MapMsg32ATo16( HWND h
     case WM_STYLECHANGING:
     case WM_STYLECHANGED:
         return -1;
-    case WM_DDE_INITIATE:
-    case WM_DDE_TERMINATE:
-    case WM_DDE_UNADVISE:
-    case WM_DDE_REQUEST:
-        *pwparam16 = HWND_16((HWND)wParam32);
-        return 0;
-    case WM_DDE_ADVISE:
-    case WM_DDE_DATA:
-    case WM_DDE_POKE:
-        {
-            UINT_PTR lo32, hi;
-            HANDLE16    lo16 = 0;
-
-            *pwparam16 = HWND_16((HWND)wParam32);
-            UnpackDDElParam(msg32, *plparam, &lo32, &hi);
-            if (lo32 && !(lo16 = convert_handle_32_to_16(lo32, GMEM_DDESHARE)))
-                return -1;
-            *plparam = MAKELPARAM(lo16, hi);
-        }
-        return 0; /* FIXME don't know how to free allocated memory (handle)  !! */
-    case WM_DDE_ACK:
-        {
-            UINT_PTR    lo, hi;
-            int         flag = 0;
-            char        buf[2];
-
-            *pwparam16 = HWND_16((HWND)wParam32);
-
-            UnpackDDElParam(msg32, *plparam, &lo, &hi);
-
-            if (GlobalGetAtomNameA((ATOM)hi, buf, sizeof(buf)) > 0) flag |= 1;
-            if (GlobalSize((HANDLE)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_32_to_16(hi, GMEM_DDESHARE);
-                break;
-            }
-            *plparam = MAKELPARAM(lo, hi);
-        }
-        return 0; /* FIXME don't know how to free allocated memory (handle) !! */
-    case WM_DDE_EXECUTE:
-        *plparam = convert_handle_32_to_16(*plparam, GMEM_DDESHARE);
-        return 0; /* FIXME don't know how to free allocated memory (handle) !! */
     default:  /* No translation needed */
         return 0;
     }
@@ -2278,6 +2222,61 @@ LRESULT WINPROC_CallProc32ATo16( winproc
             *result = 0;
         }
         break;
+    case WM_DDE_INITIATE:
+    case WM_DDE_TERMINATE:
+    case WM_DDE_UNADVISE:
+    case WM_DDE_REQUEST:
+        ret = callback( HWND_16(hwnd), msg, HWND_16((HWND)wParam), lParam, result, arg );
+        break;
+    case WM_DDE_ADVISE:
+    case WM_DDE_DATA:
+    case WM_DDE_POKE:
+        {
+            UINT_PTR lo32, hi;
+            HANDLE16 lo16 = 0;
+
+            UnpackDDElParam( msg, lParam, &lo32, &hi );
+            if (lo32 && !(lo16 = convert_handle_32_to_16(lo32, GMEM_DDESHARE))) break;
+            ret = callback( HWND_16(hwnd), msg, HWND_16((HWND)wParam),
+                            MAKELPARAM(lo16, hi), result, arg );
+        }
+        break; /* FIXME don't know how to free allocated memory (handle)  !! */
+    case WM_DDE_ACK:
+        {
+            UINT_PTR lo, hi;
+            int flag = 0;
+            char buf[2];
+
+            UnpackDDElParam( msg, lParam, &lo, &hi );
+
+            if (GlobalGetAtomNameA((ATOM)hi, buf, sizeof(buf)) > 0) flag |= 1;
+            if (GlobalSize((HANDLE)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_32_to_16(hi, GMEM_DDESHARE);
+                break;
+            }
+            ret = callback( HWND_16(hwnd), msg, HWND_16((HWND)wParam),
+                            MAKELPARAM(lo, hi), result, arg );
+        }
+        break; /* FIXME don't know how to free allocated memory (handle) !! */
+    case WM_DDE_EXECUTE:
+        lParam = convert_handle_32_to_16(lParam, GMEM_DDESHARE);
+        ret = callback( HWND_16(hwnd), msg, wParam, lParam, result, arg );
+        break; /* FIXME don't know how to free allocated memory (handle) !! */
     default:
         {
             UINT16 msg16;




More information about the wine-cvs mailing list