Commit f096dae3 authored by Aric Stewart's avatar Aric Stewart Committed by Alexandre Julliard

imm: Implement ImmGenerateMessage.

parent 0e5d5b37
......@@ -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
*/
......
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment