다국어 IME 분석 문서

IME_분석.pdf

 

다국어 IME 예제 소스

DefIme.zip

조합 중인 문자 취소 시키기

const HIMC hIMC = ::ImmGetContext( m_hWnd );
ImmNotifyIME(hIMC, NI_COMPOSITIONSTR, CPS_CANCEL, 0);
::ImmReleaseContext( m_hWnd, hIMC );

 

조합 중인 문자 가져오기

if(lParam&GCS_COMPSTR) {

const HIMC hIMC = ::ImmGetContext( m_hWnd );

int tempSize = ImmGetCompositionStringW(hImc, GCS_COMPSTR, NULL, 0);

char *pBuf = (char *)malloc(tempSize );

ImmGetCompositionStringW(hImc, GCS_COMPSTR, pBuf, tempSize);

ImmReleaseContext(m_hWnd, hImc);

}

조합이 완성된 문자 가져오기

if(lParam&GCS_RESULTSTR) {

const HIMC hIMC = ::ImmGetContext( m_hWnd );

int tempSize = ImmGetCompositionStringW(hImc, GCS_RESULTSTR, NULL, 0);

char *pBuf = (char *)malloc(tempSize );

ImmGetCompositionStringW(hImc, GCS_RESULTSTR, pBuf, tempSize);

ImmReleaseContext(m_hWnd, hImc);

}

조합 윈도우 위치 설정하기

void SetIMECompPos( int xpos , int ypos )
{
    HIMC hImc = ImmGetContext(m_hWnd);
    if( hImc )  {
        COMPOSITIONFORM cf;
        cf.dwStyle = CFS_POINT;

        cf.ptCurrentPos.x = xpos;
        cf.ptCurrentPos.y = ypos;

        ImmSetCompositionWindow(hImc, &cf);
        ImmReleaseContext(m_hWnd, hImc);
    }
}

이 글은 스프링노트에서 작성되었습니다.

+ Recent posts