IME 영문만 입력가능하게 하기
Programming/Win32API / 2010. 9. 3. 15:09
출처 : GPG스터디 http://www.gpgstudy.com/forum/viewtopic.php?t=8137&highlight=ime+%C7%D1%B1%DB
윈도우 메시지 프로시저로 IME의 컨버전 모드가 변경 되었을 경우 아래와 같이 메시지가 옵니다.
코드: |
if (WM_IME_NOTIFY == Message) { switch (wParam) { case IMN_SETCONVERSIONMODE: { //한영키가 눌렸는가 검사 HIMC hIMC = NULL; if (hIMC = ImmGetContext(this->GetWindowHandle())) { DWORD fdwConversion, fdwSentence; BOOL bRet = ImmGetConversionStatus(hIMC, &fdwConversion, &fdwSentence); if(bRet) { bRet = (fdwConversion & IME_CMODE_NATIVE ? TRUE : FALSE); if (bRet) { //한글 모드임! } else { //영문 모드임! } } ImmReleaseContext(this->GetWindowHandle(), hIMC); } } } |
이렇게 알아 낸 후 컨버전 모드를 변경하고 싶다면 아래와 같이 하면 됩니다
코드: |
//영문으로 변경하고 싶다면.. DWORD dwMode = IME_CMODE_ALPHANUMERIC; //한글로 변경하고 싶다면.. DWORD dwMode = IME_CMODE_NATIVE; ImmSetConversionStatus(hImc, dwMode, NULL); |
대략 무조건 영문으로 고정을 시키시고 싶으신듯 하니.. 아래와 같이 간편화가 될듯 합니다.
코드: |
if (WM_IME_NOTIFY == Message) { switch (wParam) { case IMN_SETCONVERSIONMODE: { //한영키가 눌렸는가 검사 HIMC hIMC = NULL; if (hIMC = ImmGetContext(this->GetWindowHandle())) { ImmSetConversionStatus(hImc, IME_CMODE_ALPHANUMERIC, NULL); } ImmReleaseContext(this->GetWindowHandle(), hIMC); } } } |
반응형
'Programming > Win32API' 카테고리의 다른 글
한영키 누름 윈도우 메세지 확인 관련 (2) | 2010.09.06 |
---|---|
Keyboard 입력 받기 (0) | 2010.09.03 |
IME (0) | 2010.09.02 |
getClienteRect 와 getWindowRect (0) | 2010.08.31 |
mfc, api 의 HINSTANCE 구하기 GetModuleHandle(NULL) (0) | 2010.06.03 |