Alexandre Julliard : user: Added fast W-> A mapping for WM_CHAR and related messages.

Alexandre Julliard julliard at wine.codeweavers.com
Thu May 18 09:43:57 CDT 2006


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu May 18 12:27:27 2006 +0200

user: Added fast W->A mapping for WM_CHAR and related messages.

---

 dlls/user/winproc.c |   31 ++++++++++++++++---------------
 1 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/dlls/user/winproc.c b/dlls/user/winproc.c
index 4fbb4c0..b0bddaa 100644
--- a/dlls/user/winproc.c
+++ b/dlls/user/winproc.c
@@ -992,21 +992,6 @@ static INT WINPROC_MapMsg32WTo32A( HWND 
 {
     switch(msg)
     {
-    case WM_CHARTOITEM:
-    case WM_MENUCHAR:
-    case WM_CHAR:
-    case WM_DEADCHAR:
-    case WM_SYSCHAR:
-    case WM_SYSDEADCHAR:
-    case EM_SETPASSWORDCHAR:
-        {
-            WCHAR wch = LOWORD(*pwparam);
-            BYTE ch;
-            WideCharToMultiByte( CP_ACP, 0, &wch, 1, (LPSTR)&ch, 1, NULL, NULL );
-            *pwparam = MAKEWPARAM( ch, HIWORD(*pwparam) );
-        }
-        return 0;
-
     case WM_IME_CHAR:
         {
             WCHAR wch = LOWORD(*pwparam);
@@ -3007,6 +2992,22 @@ static LRESULT WINPROC_CallProc32WTo32A(
         }
         break;
 
+    case WM_CHARTOITEM:
+    case WM_MENUCHAR:
+    case WM_CHAR:
+    case WM_DEADCHAR:
+    case WM_SYSCHAR:
+    case WM_SYSDEADCHAR:
+    case EM_SETPASSWORDCHAR:
+        {
+            WCHAR wch = LOWORD(wParam);
+            BYTE ch;
+            RtlUnicodeToMultiByteN( (LPSTR)&ch, 1, NULL, &wch, sizeof(WCHAR) );
+            wParam = MAKEWPARAM( ch, HIWORD(wParam) );
+            ret = WINPROC_CallWndProc( func, hwnd, msg, wParam, lParam );
+        }
+        break;
+
     default:
         if ((unmap = WINPROC_MapMsg32WTo32A( hwnd, msg, &wParam, &lParam )) == -1) {
             ERR_(msg)("Message translation failed. (msg=%s,wp=%08x,lp=%08lx)\n",




More information about the wine-cvs mailing list