본문 바로가기

Application Programming Interface/Windows API

Windows DDK 문서 IMEIMES.DOC - 1. Overview (개요)

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

IME 개발을 위한 Win32 다국어 IME 개요

버전 1.32
최종 수정일: 1998년 4월 1일, 번역: Luciano Jeong


 이 문서는 어떻게 Windows 95, Windows 98, Windows NT 및 2000을 위한 IME를 개발할 지에 대한 기초를 소개합니다. 또한 이 문서는 IME 개발을 위해 Win32 다국어 IME를 위해 쓰일 API 레퍼런스 내용을 보충합니다.

  • Overview(개요)
  • IME User Interface(IME 사용자 인터페이스)
  • IME Input Context(IME 입력 컨텍스트)
  • Generating Messages(메시지 발생)
  • ImeSetCompositionString 함수
  • Soft Keyboard(소프트 키보드)
  • Reconversion(재전환)
  • IME Menu Functions(IME 메뉴 함수)
  • IME Help File(IME 도움말 파일)
  • Windows NT/Windows 2000 Issues(윈도우 NT/윈도우 2000 배포)
  • IME File Format and Data Structures(IME 파일 포맷 및 데이터 구조)

개요

 Windows 3.1 극동 지역 버전에서 제공된 IME와 다르게, Windows 95와 Windows NT 4.0을 시작으로 Input Method Editor(IME)는 동적 링크 라이브러리(DLL)의 형태로 제공되었습니다.

 각 IME는 다국어 키보드 레이아웃으로 작동됩니다. Windows 3.1 IME와 다르게 새로운 Win32 다국어 Input Method Manager(IMM)과 Input Method Editor(IME) 구조는 아래와 같은 이점을 제공합니다.

  • 다국어 환경을 제공하는 구성요소로서 작동됩니다.
  • 실행중인 어플리케이션별로 각각 별개인 다중 입력 도구가 제공됩니다.
  • 어플리케이션별로 각 1개의 IME가 활성화됩니다.
  • 어플리케이션에게 메시지 루프로써 정보를 제공합니다.
  • IME를 인식하는 어플리케이션과 그렇지 않은 어플리케이션 모두에 강력한 지원을 제공합니다.

 이러한 이점을 극대화하여 이용하기 위해, 어플리케이션은 새로운 Win32 IMM/IME 인터페이스를 지원할 필요가 있습니다.

 기존 Windows 95 및 NT 4.0 IME와의 최대의 호환성을 유지하기 위해, Windows 98과 2000의 IME는 크게 바뀐 부분이 없습니다. 그러나 더 나은 시스템 통합을 제공하고 보다 지능적인 IME를 지원하기 위해 새로운 기능이 추가되었습니다.

알림

 IME 개발자는 DDK에 있는 immdev.h 헤더파일을 사용해야 합니다. 이는 SDK 및 기타 개발 도구에 있는 imm.h를 포함하는 상위 집합입니다.

Windows 98과 2000의 IMM/IME

 Windows 98과 2000의 IMM/IME 구조는 Windows 95와 NT 4.0의 설계를 차용했습니다.

 그러나 더 지능적인 IME 개발을 지원하고 Windows 운영체제와 IME 사이의 통합을 위해 아래와 같은 변화가 포함되었습니다.

  • 어플리케이션과 IMM/IME 사이의 소통을 위해 새로운 IME함수가 추가되었습니다:
    ImmAssociateContextEx
    ImmDisableIME
    ImmGetImeMenuItems
  • IME가 어플리케이션과 IMM 사이에서 중계할 수 있도록 새로운 함수가 추가되었습니다.
    ImmRequestMessage
    ImeGetImeMenuItems
  • 리컨벤션(재전환) 지원
    이미 어플리케이션에 입력된 문자열도 다시 변환할 수 있도록 하는 새로운 IME 기능입니다. 이 기능은 IME가 변환된 결과에 대한 정보를 얻을 수 있도록 돕고 재변환의 정확도와 성능을 높이도록 합니다. 이 기능은 어플리케이션과 IME가 상호작용할 수 있을 것을 요구합니다.
  • 시스템 펜 아이콘의 입력도구 메뉴에 IME 메뉴를 추가합니다.
    이 새로운 기능은 여러분이 개발할 IME가 작업표시줄에 있는 입력 도구 메뉴에 사용자 정의 메뉴를 추가할 수 있도록 지원합니다.
  • IME를 위한 새로운 비트와 플래그가 추가되었습니다.
    다음과 같은 비트는 새로운 변환 모드를 지원합니다.
    IME_CMODE_FIXED
    IME_SMODE_CONVERSATION
    IME_PROP_COMPLETE_ON_UNSELECT
  • IME를 위한 EDIT 컨트롤의 향상
    EDIT 컨트롤로 보낼 수 있는 두 개의 메시지인 EM_SETIMESTATUS, EM_GETIMESTATUS를 통해 어플리케이션은 EDIT 컨트롤의 IME 상태를 관리할 수 있습니다.
  • IME 펜 아이콘과 툴팁 텍스트의 수정
    INDICM_SETIMEICON, INDICM_SETIMETOOLTIPS, INDICM_REMOVEDEFAULTMENUITEMS의 3가지 메시지를 사용하여 윈도우 작업 표시줄의 IME 막대에 있는 펜 아이콘과 툴팁을 수정할 수 있습니다.
  • 2개의 새로운 IMR 메시지
    IMR_QUERYCHARPOSITION, IMR_DOCUMENTFEED 메시지를 사용해 IME와 어플리케이션이 현재 편집중인 문서에 대한 정보와 편집중인 위치에 대해 교환할 수 있습니다.

Win32 IME 구조

 새로운 Win32 IME는 두 가지의 구성요소를 가집니다. 하나는 IME 컨벤션 인터페이스이고 다른 하나는 IME 사용자 인터페이스입니다. IME 컨벤션 인터페이스는 IME 모듈이 export하는 함수들입니다. 이러한 함수들은 IMM에 의해 호출되는 콜백 함수입니다. IME 사용자 인터페이스는 창의 형태로 이용자에게 제공됩니다. 이러한 윈도우들은 메시지를 받고 IME에 대한 인터페이스를 제공합니다.

IME를 인식하는 어플리케이션

 Win32 IME 구조의 주요 이점은 어플리케이션과 IME가 통신할 수 있도록 더 나은 로직을 제공한다는 것입니다. 아래는 어플리케이션이 어떻게 IME와 융합되는지를 알려주는 예시입니다.

  • IME를 인식하지 않는 어플리케이션
    이런 종류의 어플리케이션은 IME를 제어하지 않습니다. 그러나 해당 어플리케이션이 더블 바이트 문자(예: KS 한글 코드)를 입력받을 수 있다면 사용자는 IME를 사용하여 어플리케이션에 더블 바이트 문자를 입력할 수 있습니다.
  • IME 반 인식 어플리케이션
    이런 종류의 어플리케이션은 전형적으로 문자 조합, 열기/닫기와 같은 IME의 각종 도구를 제어합니다. 그러나 IME를 통해 어떤 사용자 인터페이스도 표시하지 않습니다.
  • IME 전 인식 어플리케이션
    이런 종류의 어플리케이션은 전형적으로 IME로부터 전달받은 어떤 정보든 응답하고 표시할 것을 요구합니다.

 Windows 95와 Windows NT 4.0 및 그 이후 버전에서, IME를 인식하지 않는 어플리케이션에게는 기본 IME 창과 기본 입력 컨텍스트가 제공됩니다.

 IME 반 인식 어플리케이션은 자기 자신의 IME 창을 생성하여 소유합니다. 또한 미리 정의된 IME 시스템 윈도우 클래스를 사용하여 IME 창을 호출할 수 있고 자신에게 부여된 입력 컨텍스트를 다룰 수 있습니다.

 IME 전 인식 어플리케이션은 입력 컨텍스트를 직접 다룰 수 있고 입력 컨텍스트로부터 받은 필요한 정보를 IME 창 없이 표시할 수 있습니다.