Bearbeta WM_IME_COMPOSITION-meddelandet
Ett IME-medvetet program som bearbetar WM_IME_COMPOSITION-meddelandet testar bitarna i parametern lParam och anropar funktionen ImmGetCompositionString för att hämta den angivna strängen eller data. Följande exempel söker efter resultatsträngen, allokerar tillräckligt med minne för strängen och hämtar resultatsträngen från IME.
HIMC hIMC;
DWORD dwSize;
HGLOBAL hstr;
LPSTR lpstr;
case WM_IME_COMPOSITION:
if (lParam & GCS_RESULTSTR)
{
hIMC = ImmGetContext(hWnd);
if (!hIMC)
MyError(ERROR_NULLCONTEXT);
// Get the size of the result string.
dwSize = ImmGetCompositionString(hIMC, GCS_RESULTSTR, NULL, 0);
// increase buffer size for terminating null character,
// maybe it is in UNICODE
dwSize += sizeof(WCHAR);
hstr = GlobalAlloc(GHND,dwSize);
if (hstr == NULL)
MyError(ERROR_GLOBALALLOC);
lpstr = (LPSTR)GlobalLock(hstr);
if (lpstr == NULL)
MyError(ERROR_GLOBALLOCK);
// Get the result strings that is generated by IME into lpstr.
ImmGetCompositionString(hIMC, GCS_RESULTSTR, lpstr, dwSize);
ImmReleaseContext(hWnd, hIMC);
// add this string into text buffer of application
GlobalUnlock(hstr);
GlobalFree(hstr);
}
Relaterade ämnen