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