Aric Stewart : imm: Implement ImmGenerateMessage.

Alexandre Julliard julliard at winehq.org
Mon Feb 11 14:19:33 CST 2008


Module: wine
Branch: master
Commit: f096dae361da369aa39e62c766ad590846e20f3f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f096dae361da369aa39e62c766ad590846e20f3f

Author: Aric Stewart <aric at codeweavers.com>
Date:   Fri Feb  8 12:50:06 2008 -0600

imm: Implement ImmGenerateMessage.

---

 dlls/imm32/imm.c      |   33 +++++++++++++++++++++++++++++++++
 dlls/imm32/imm32.spec |    2 +-
 2 files changed, 34 insertions(+), 1 deletions(-)

diff --git a/dlls/imm32/imm.c b/dlls/imm32/imm.c
index c5fc71e..78c61ce 100644
--- a/dlls/imm32/imm.c
+++ b/dlls/imm32/imm.c
@@ -54,6 +54,12 @@ typedef struct tagInputContextData
         INPUTCONTEXT    IMC;
 } InputContextData;
 
+typedef struct _tagTRANSMSG {
+    UINT message;
+    WPARAM wParam;
+    LPARAM lParam;
+} TRANSMSG, *LPTRANSMSG;
+
 static InputContextData *root_context = NULL;
 static HWND hwndDefault = NULL;
 static HANDLE hImeInst;
@@ -1993,6 +1999,33 @@ DWORD WINAPI ImmGetIMCCSize(HIMCC imcc)
     return internal->dwSize;
 }
 
+/***********************************************************************
+*		ImmGenerateMessage(IMM32.@)
+*/
+BOOL WINAPI ImmGenerateMessage(HIMC hIMC)
+{
+    InputContextData *data = (InputContextData*)hIMC;
+
+    TRACE("%i messages queued\n",data->IMC.dwNumMsgBuf);
+    if (data->IMC.dwNumMsgBuf > 0)
+    {
+        LPTRANSMSG lpTransMsg;
+        INT i;
+
+        lpTransMsg = (LPTRANSMSG)ImmLockIMCC(data->IMC.hMsgBuf);
+        for (i = 0; i < data->IMC.dwNumMsgBuf; i++)
+            ImmInternalPostIMEMessage(lpTransMsg[i].message, lpTransMsg[i].wParam, lpTransMsg[i].lParam);
+
+        ImmUnlockIMCC(data->IMC.hMsgBuf);
+        ImmDestroyIMCC(data->IMC.hMsgBuf);
+
+        data->IMC.dwNumMsgBuf = 0;
+        data->IMC.hMsgBuf = NULL;
+    }
+
+    return TRUE;
+}
+
 /*****
  * Internal functions to help with IME window management
  */
diff --git a/dlls/imm32/imm32.spec b/dlls/imm32/imm32.spec
index ee2ca0a..0ecd1f9 100644
--- a/dlls/imm32/imm32.spec
+++ b/dlls/imm32/imm32.spec
@@ -17,7 +17,7 @@
 @ stdcall ImmEscapeA(long long long ptr)
 @ stdcall ImmEscapeW(long long long ptr)
 @ stub ImmFreeLayout
-@ stub ImmGenerateMessage
+@ stdcall ImmGenerateMessage(ptr)
 @ stdcall ImmGetCandidateListA(long long ptr long)
 @ stdcall ImmGetCandidateListCountA(long ptr)
 @ stdcall ImmGetCandidateListCountW(long ptr)




More information about the wine-cvs mailing list