다음을 통해 공유


WM_IME_COMPOSITION 메시지 처리

WM_IME_COMPOSITION 메시지를 처리하는 IME 인식 애플리케이션은 lParam 매개 변수의 비트를 테스트하고 ImmGetCompositionString 함수를 호출하여 표시된 문자열 또는 데이터를 검색합니다. 다음 예제에서는 결과 문자열을 확인하고, 문자열에 충분한 메모리를 할당하고, 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);
    }

입력 방법 관리자 사용