imm: Implement ImmGenerateMessage.
This commit is contained in:
parent
0e5d5b37ec
commit
f096dae361
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue