공장 이야기

SIP 설정하기

바다가소주라면- 2009. 10. 12. 17:29

BOOL SetSIPControl(HWND wndWindow, BOOL bConversion, BOOL bShow)
{
        HIMC imcSip = 0;
 
        imcSip = ::ImmGetContext(wndWindow);
        if(TRUE == bConversion)
                ::ImmSetConversionStatus(imcSip, IME_CMODE_NATIVE, NULL);
        else
                ::ImmSetConversionStatus(imcSip, IME_CMODE_ALPHANUMERIC, NULL);
        ::ImmReleaseContext(wndWindow, imcSip);

 

        if(TRUE == bShow)
                ::SipShowIM(SIPF_ON);
        else
                ::SipShowIM(SIPF_OFF);

        return TRUE;
}

 

BOOL GetSIPState(HWND wndWindow)
{
        HIMC  imcSip       = 0;
        DWORD dwSentence   = 0;
        DWORD dwConversion = 0;

 

        imcSip = ::ImmGetContext(wndWindow);
        ::ImmGetConversionStatus(imcSip, &dwConversion, &dwSentence);
        ::ImmReleaseContext(wndWindow, imcSip);

 

        if( dwConversion & IME_CMODE_NATIVE )
                return TRUE;  // 한글

        return FALSE;  // 영문
}

 

정확히 말하자면 IME_CMODE_NATIVE 가 한글은 아닙니다. 말그대로 NATIVE죠.^^ 한글 OS에선 한글 자판이라는 의미 겠죠? Define 된 곳을 가보면 아래와 같습니다.

 

// bit field for conversion mode
#define IME_CMODE_ALPHANUMERIC          0x0000
#define IME_CMODE_NATIVE                0x0001
#define IME_CMODE_CHINESE               IME_CMODE_NATIVE
// IME_CMODE_HANGEUL is old name of IME_CMODE_HANGUL. It will be gone eventually.
#define IME_CMODE_HANGEUL               IME_CMODE_NATIVE
#define IME_CMODE_HANGUL                IME_CMODE_NATIVE
#define IME_CMODE_JAPANESE              IME_CMODE_NATIVE