处理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);
}