imm: Implement ImmGenerateMessage.

This commit is contained in:
Aric Stewart 2008-02-08 12:50:06 -06:00 committed by Alexandre Julliard
parent 0e5d5b37ec
commit f096dae361
2 changed files with 34 additions and 1 deletions

View File

@ -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
*/

View File

@ -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)