티스토리 뷰



MFC EditBox에 한글을 입력하다가 ( 즉, 조립중인 문자열이 발생되어 질때 )


LButtonClick 과 같은 이벤트가 발생하였을 때, EditBox에 Caption을 엎어쳐 주게되면,
순간적으로는 Caption의 내용이 정상적으로 엎어쳐 진 것 같다. 
하지만..........


다른 컨트롤을 선택해보면, ( Invalidate() 가 호출되면 )
사실은 EditBox의 Caption에는 엎어쳐준것과 조립중이던 문자열의 조합으로
이상한 쓰레기 값이 들어오게 된다.

이 이유는 한글을 입력할때에는, 조립중인 문자열이 발생하는 것을 윈도우 핸들이 저장하고 있다가
모든 것이 끝나면, 그 내용을 출력해주기 때문이다.

이를 해결하는 방법을 알아보자

일단 LbuttonClick 이벤트가 발생되어지는 Cpp 파일내에
imm.h 헤더를 추가해주자.
그리고 나서 프로젝트 link에 imm32.lib를 추가해주자

그 후에 Button이 클릭되는 시점
HIMC hImc;
hImc = ImmGetContext(m_hWnd);
ImmNotifyIME(hImc,NI_COMPOSITIONSTR,CPS_CANCEL,0);
ImmReleaseContext(m_hWnd, hImc);

코드를 추가하면 끝! 올레!!



댓글