处理WM_IME_COMPOSITION讯息

【勇芳软件工作室】汉化HomePreviousNext

处理WM_IME_COMPOSITION消息的应用程序测试【lParam的】参数中的位,并调用ImmGetCompositionString函数来检索指示的字符串或数据。以下示例检查结果字符串,为字符串分配足够的内存,并从IME中检索结果字符串:

HIMC hIMC;
HWND hWnd;
DWORD dwSize;
HGLOBAL hstr;
LPSTR lpstr;

case WM_IME_COMPOSITION:
if(lParam & GCS_RESULTSTR){
hIMC = ImmGetContext(hWnd);

如果(!Hunc)la
MyError(ERROR_NULLCONTEXT);

//获取结果字符串的大小。
dwSize = ImmGetCompositionString(hIMC, GCS_RESULTSTR, NULL, 0);

//增加NULL终结器的缓冲区大小,
//也许这是在UNICODE
dwSize += sizeof(WCHAR);

hstr = GlobalAlloc(GHND,dwSize);
if (hstr == NULL)
MyError(ERROR_GLOBALALLOC);

lpstr = GlobalLock(hstr);
if (lpstr == NULL)
MyError(ERROR_GLOBALLOCK);

//将由IME生成的结果字符串获取到lpstr中。
ImmGetCompositionString(hIMC, GCS_RESULTSTR, lpstr, dwSize);
ImmReleaseContext(hWnd, hIMC);

//将此字符串添加到应用程序的文本缓冲区

GlobalUnlock(hstr);
GlobalFree(hstr);
}