다국어 IME 분석 문서
다국어 IME 예제 소스
조합 중인 문자 취소 시키기
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);
}
}
이 글은 스프링노트에서 작성되었습니다.