ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • IME - Win32
    GUI/컨트롤 2009. 7. 30. 02:09
    시스템은 IME 윈도우의 변화나 조립 문자열의 변화 등 IME의 모든 상태 변화에 대해 WM_IME_로 시작되는 IME 메시지를 포커스를 가진 윈도우에게 보낸다.

    WM_IME_SETCONTEXT
        응용 프로그램이 활성/비활성화

    WM_IME_NOTIFY
        IMN_OPENSTATUSWINDOW
            상태 윈도우를 열었다 // ??

    한영 변환
        WM_IME_NOTIFY
            IMN_SETOPENSTATUS
            IMN_SETCONVERSIONMODE

    조립 윈도우
        WM_IME_STARTCOMPOSITION
            디폴트 IME 윈도우는 이 메시지를 받았을 때 조립 윈도우를 보여준다.
            이 메시지를 DefWindowProc으로 보내지 않으면 조립 윈도우는 나타나지 않는다.
        WM_IME_ENDCOMPOSITION
           
        WM_IME_COMPOSITION
    조립 상태가 변경될 때마다 조립 중인 문자열이 보내진다.       
    상태 변수에 현재 상태를 유지해서 버퍼를 적절히 조작해 줄 수 있다.
            GCS_COMPSTR
    아직 조립중
                ImmGetCompositionString()
                    GCS_COMPSTR
            GCS_RESULTSTR
                확정
                ImmGetCompositionString()
                    GCS_RESULTSTR
                0을 리턴하면 완성된 문자에 대해 WM_IME_CHAR 메시지가 발생하지 않는다.
        WM_IME_CHAR
    문자 하나가 완성되었을 때 보내진다.
    wParam으로 완성된 문자의 코드가 전달되는데 이 코드는 DBCS일 수도 있다.
            0을 리턴하면 완성된 문자에 대해 WM_CHAR 메시지는 오지 않는다.

            IsDBCSLeadByte()

    WM_CHAR
        완성된 글자의 상하위 바이트에  대해 두 번의 메시지


    입력 컨텍스트
        문자입력을 받아들이는 윈도우(편집/입력 창)들은 모두 입력 컨텍스트를 가진다.
        시스템은 별도의 지정이 없어도 스레드마다 디폴트 입력 컨텍스트를 자동으로 생성하며 이 컨텍스트는 스레드 내의 모든 윈도우에 의해 공유된다. // ImmAssociateContext()
        디폴트 입력 컨텍스트는 영문 입력모드로 시작

        IME의 현재 상태에 대한 정보들
            조립 문자열, 변환 모드, IME 윈도우의 위치 등

        IME의 상태를 조사하거나 변경하고 싶다면 먼저 입력 컨텍스트의 핸들을 구해야 한다.
        입력 컨텍스트로부터 상태를 구하고 변경하는 것 중에 가장 실용적인 예는 입력모드를 소프트웨어적으로 변환하는 것이다.

        ImmGetContext()
        ImmReleaseContext()

        ImmGetConversionStatus()
            변환 모드
                IME_CMODE_NATIVE - 한글 입력모드
        ImmSetConversionStatus()

        윈도우 별로 입력 컨텍스트를 만들어 상태를 따로 유지하고 싶다면
        ImmCreateContext()
        ImmDestroyContext()
        ImmAssociateContext()
        on WM_IME_COMPOSITION
    ImmGetCompositionString()
    GCS_COMPSTR
    GCS_RESULTSTR

    참조 사이트:
Designed by Tistory.