본문 바로가기
C & C++/MFC 컨트롤

[Edit] 한글입력을 받고싶지 않을때

by izen8 2011. 3. 27.
반응형

1.요약

특정 컨트롤에서 영문만 입력 받고자 할때에는 IME의 사용을 중지하면 됩니다.


2.본문

IME 즉, Input Method Editor 라고 해서 현재 우리는 한글을 입력하기 위해서 윈도우에서 제공하는 한글 입력기를 사용하고 있습니다. 과거, 도스 상에서는 도깨비라는 에뮬레이터를 많지도 않은 메모리에 로드해서 사용했었는데, 하여튼 참 편하게 됐습니다.

특정 컨트롤에서 영문만 입력 받기 위해서는 IME 를 사용하지 않도록 설정하면 됩니다. 제공되는 함수로는, ImmAssociateContext() 이며 이 함수를 사용하여 IME 의 사용여부를 설정할 수 있습니다.

HIMC ImmAssociateContext(
  HWND hWnd,  
  HIMC hIMC   
);

3.예제

#pragma comment(lib, "Imm32.lib")

void CIMEDlg::OnImeSet()
{
   // IME 저장 폴더
   static HIMC hImc = NULL;
   static BOOL bOn = TRUE;

   if (bOn)
   {
       // IME 해제
       hImc = ImmAssociateContext(GetDlgItem(IDC_EDIT_IME)->GetSafeHwnd(), NULL);
       SetDlgItemText(IDC_IME, _T("IME ON"));
   }
   else
   {
       // IME 설정
       hImc = ImmAssociateContext(GetDlgItem(IDC_EDIT_IME)->GetSafeHwnd(), hImc);
       SetDlgItemText(IDC_IME, _T("IME OFF"));
   }

   bOn = !bOn;
}

반응형

댓글