imm32: All HIMCC in the InputContext should be initialized at creation.

This commit is contained in:
Aric Stewart 2008-04-11 10:58:42 -05:00 committed by Alexandre Julliard
parent 352c98d7d5
commit 3dde049f31
2 changed files with 32 additions and 2 deletions

View File

@ -496,6 +496,8 @@ BOOL WINAPI ImmConfigureIMEW(
HIMC WINAPI ImmCreateContext(void) HIMC WINAPI ImmCreateContext(void)
{ {
InputContextData *new_context; InputContextData *new_context;
LPGUIDELINE gl;
LPCANDIDATEINFO ci;
new_context = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(InputContextData)); new_context = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(InputContextData));
@ -509,9 +511,19 @@ HIMC WINAPI ImmCreateContext(void)
return 0; return 0;
} }
/* hCompStr is never NULL */ /* the HIMCCs are never NULL */
new_context->IMC.hCompStr = ImmCreateBlankCompStr(); new_context->IMC.hCompStr = ImmCreateBlankCompStr();
new_context->IMC.hMsgBuf = ImmCreateIMCC(1); new_context->IMC.hMsgBuf = ImmCreateIMCC(0);
new_context->IMC.hCandInfo = ImmCreateIMCC(sizeof(CANDIDATEINFO));
ci = ImmLockIMCC(new_context->IMC.hCandInfo);
memset(ci,0,sizeof(CANDIDATEINFO));
ci->dwSize = sizeof(CANDIDATEINFO);
ImmUnlockIMCC(new_context->IMC.hCandInfo);
new_context->IMC.hGuideLine = ImmCreateIMCC(sizeof(GUIDELINE));
gl = ImmLockIMCC(new_context->IMC.hGuideLine);
memset(gl,0,sizeof(GUIDELINE));
gl->dwSize = sizeof(GUIDELINE);
ImmUnlockIMCC(new_context->IMC.hGuideLine);
/* Initialize the IME Private */ /* Initialize the IME Private */
new_context->IMC.hPrivate = ImmCreateIMCC(new_context->immKbd->imeInfo.dwPrivateDataSize); new_context->IMC.hPrivate = ImmCreateIMCC(new_context->immKbd->imeInfo.dwPrivateDataSize);

View File

@ -84,6 +84,24 @@ typedef struct tagCOMPOSITIONSTRING {
DWORD dwPrivateOffset; DWORD dwPrivateOffset;
} COMPOSITIONSTRING, *LPCOMPOSITIONSTRING; } COMPOSITIONSTRING, *LPCOMPOSITIONSTRING;
typedef struct tagGUIDELINE {
DWORD dwSize;
DWORD dwLevel;
DWORD dwIndex;
DWORD dwStrLen;
DWORD dwStrOffset;
DWORD dwPrivateSize;
DWORD dwPrivateOffset;
} GUIDELINE, *LPGUIDELINE;
typedef struct tagCANDIDATEINFO {
DWORD dwSize;
DWORD dwCount;
DWORD dwOffset[32];
DWORD dwPrivateSize;
DWORD dwPrivateOffset;
} CANDIDATEINFO, *LPCANDIDATEINFO;
LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC); LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC);
BOOL WINAPI ImmUnlockIMC(HIMC); BOOL WINAPI ImmUnlockIMC(HIMC);
DWORD WINAPI ImmGetIMCLockCount(HIMC); DWORD WINAPI ImmGetIMCLockCount(HIMC);