user32: implements WM_UNICHAR for edit.c

Hongbo Ni hongbo at njstar.com
Wed Jul 23 06:54:39 CDT 2008


user32: implements WM_UNICHAR for edit.c

---
 dlls/user32/edit.c |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/dlls/user32/edit.c b/dlls/user32/edit.c
index f1c34f8..197b5d5 100644
--- a/dlls/user32/edit.c
+++ b/dlls/user32/edit.c
@@ -860,6 +860,28 @@ static LRESULT WINAPI EditWndProc_common( HWND hwnd, UINT msg,
 		break;
 	}
 
+    case WM_UNICHAR:
+        if(wParam == UNICODE_NOCHAR)
+            return unicode? TRUE:FALSE;
+        else if(unicode)
+        {
+            UINT uc = wParam;
+            if(uc <= 0x000FFFFF)
+            {
+                if(uc > 0xFFFF) /* convert to surrogates */
+                {
+                    WCHAR wc;
+                    uc -= (UINT)0x00010000;
+                    wc =(WCHAR)(uc >> 10) + 0xD800;
+                    EDIT_WM_Char(es, wc);
+                    uc =(WCHAR)(uc & 0x0000003FF) + 0xDC00;
+                }
+                EDIT_WM_Char(es, (WCHAR)uc);
+            }
+            return 0; /* should return zero if processes this message */
+        }
+        break;
+
 	case WM_CLEAR:
 		EDIT_WM_Clear(es);
 		break;
-- 
1.5.6.1.1071.g76fb




More information about the wine-patches mailing list