none
MFC / EditControl에서 한글 입력 시 이벤트가 여러번 발생하는 현상 RRS feed

  • 질문

  • 안녕하세요.

    MFC의 메시지맵에서 ON_EN_CHANGE(IDC_EDT_WORD, OnChangeEdtWord) 로 Edit Control과 함수를 연결 해 글자가 입력 할 때 마다 해당 함수가 실행되게 했습니다.

    그런데 Edit Control에 한글을 직접 입력 할 때 마다 OnChangeEdtWord()가 세번 실행 되더라고요.

    예를 들어서 "ㅇㅇ"을 입력하면 첫번째 실행 될 때 EditText에서 받아 온 값이 "ㅇ"이고, 두번째는 "", 세 번째는 "ㅇㅇ"로 매번 실행 될 때 마다 EditText에 입력되어 있는 값도 달랐습니다.

    Visual Studio 2013 (v120)에서 개발 중입니다.

    혹시 이유나 해결 방법을 아시는 분은 도움을 주시면 감사하겠습니다.


    • 편집됨 kimhc999 2015년 12월 18일 금요일 오전 8:09
    2015년 12월 18일 금요일 오전 7:20

답변

  • 영문과는 달리 한글은 IME를 통한 '조합'이라는 과정을 거쳐서 글자를 완성하게 됩니다.

    이 조합 과정에서 내부적으로 조합중인 문자를 지우고, 완성된 문자를 삽입하는 식으로 구현되어있어 이런 현상이 발생하는 것 같네요.

    비슷한 고민을 하신 분의 블로그 포스팅이 있어서 링크 올려드립니다.

    http://metalkin.tistory.com/4

    IME 관련 메시지를 같이 처리하는 방법입니다.

    2015년 12월 21일 월요일 오전 12:45