본문 바로가기

Application Programming Interface/Windows API

Windows NT 4.0 DDK 문서 - IMEAPPS.DOC [Part 2]

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

Windows 95 / Windows NT 어플리케이션을 위한 다국어 IME 규격

Version 1.18

마지막 수정일: 1996년 5월 21일, 번역: Luciano Jeong


ImmSetCompositionString 함수에 대하여

5.1 구성요소

5.1.1 절(Clause)

 절은 하나 또는 그 이상의 문자로 구성되어 있습니다. 그리고 절은 변환의 기본 단위입니다. 기본적으로 IME는 한번에 하나의 절을 변환합니다. 한 절에 있는 모든 문자는 같은 속성을 가져야 합니다.

5.1.2 대상 절(Target Clause)

 대상 절은 하나의 절입니다. 그리고 이 절은 사용자가 변환합니다.(And it is the clause that the end user is converting.) 속성은 0x01 또는 0x11이어야 합니다.

5.1.3 컴포지션 문자열(CompositionString.)

 컴포지션 문자열은 아직 입력이 확정되지 않은 문자열입니다. 이는 IME 변환에 의해 갱신될 수 있습니다. 컴포지션 문자열은 하나 또는 그 이상의 절로 구성되어야 합니다. 컴포지션 문자열은 하나의 대상 절을 가져야 하며 한 번에 최대 하나의 대상 절만 허용됩니다.

5.1.4 속성

 속성은 컴포지션 문자열과 길이가 같습니다.

5.2 ImmSetCompositionString 함수에 대하여

 ImmSetCompositionString 함수를 사용하여, 어플리케이션은 컴포지션 문자열을 SCS_CAP_COMPSTR 속성을 가진 IME로 설정할 수 있습니다. IME가 SCS_CAP_MAKEREAD 속성을 가졌으면 어플리케이션은 현재의 컴포지션 문자열의 발음 문자열을 얻을 수 있습니다. IME의 이러한 기능에 관한 비트는 ImmGetProperty() API를 참조하십시오.

 어플리케이션이 ImmSetCompositionString을 호출할 때 어플리케이션은 WM_IME_COMPOSITION 메시지를 얻을 수 있으며 이 메시지는 ImmSetCompositionString의 실제 결과입니다.

5.2 ImmSetCompositionString의 SCS 비트

5.3.1 SCS_SETSTR

 lpComp가 NULL이 아니면 lpComp는 어플리케이션이 요청한 컴포지션 문자열의 포인터입니다. 오래된 컴포지션 문자열이나 발음 문자열은 소실될 것입니다.

 일부 변환 모드에서 IME는 문자열을 받지 않을 것입니다. 예를 들어 IME가 닫혔을 경우 이 비트는 의미가 없습니다. IME는 컴포지션 문자열이 IME가 처리하기에 너무 길면 이를 잘라낼 수 있습니다. IME는 컴포지션 문자열을 위해 속성과 절 정보를 생성할 수 있습니다. lpRead가 NULL이고 IME가 SCS_CAP_MAKEREAD가 설정되었을 때 IME는 컴포지션 문자열의 발음 문자열을 생성할 것입니다. IME가 발음 문자열을 생성할 때 IME는 읽기 문자열에 대한 속성과 절 정보를 만들어야 합니다.

 IME가 컴포지션 문자열을 받았을 때 어플리케이션이 WM_IME_COMPOSITION 메시지를 받을 것입니다. 그리고 WM_IME_COMPOSITION의 lParam 값은 (GCS_COMPSTR | GCS_COMPATTR | GCS_COMPCLAUSE) 또는 (GCS_COMPSTR | GCS_COMPATTR | GCS_COMPCLAUSE | GCS_COMPREADSTR | GCS_COMPREADATTR | GCS_COMPREADCLAUSE)이 될 것입니다. lpRead가 NULL이 아니면 lpRead는 어플리케이션이 요청한 컴포지션 문자열의 발음 문자열을 참조하는 포인터입니다. 어플리케이션이 컴포지션 문자열의 발음을 설정할 때 어플리케이션은 (GCS_COMPSTR | GCS_COMPATTR | GCS_COMPCLAUSE | GCS_COMPREADSTR | GCS_COMPREADATTR | GCS_COMPREADCLAUSE)이 동반된 WM_IME_COMPOSITION 메시지를 받을 것입니다. 오래된 컴포지션 문자열과 그 발음 문자열은 소실될 것입니다. IME는 발음 문자열을 이용해 새로운 컴포지션 문자열을 만들 것입니다. (예: 발음이 같지만 한자가 다른 단어들을 처리)

 일본어의 경우 발음 문자열은 싱글 바이트 문자입니다. (영숫자 또는 SBCS 가타카나)

 한국어의 경우 발음 문자열은 더블바이트 한글입니다.

 번체 또는 간체 중국어의 경우 각 IME는 일부 영역에서 발음 문자열을 제한할 수 있습니다. 어플리케이션이 lpComp와 lpRead를 모두 설정할 경우 IME는 두 정보를 컴포지션 문자열을 설정하고 WM_IME_COMPOSITION 메시지를 발생하기 위해 참조할 수 있습니다.

5.3.2 SCS_CHANGEATTR

 새 속성을 설정합니다. lpComp가 NULL이 아닐 경우 이는 어플리케이션이 요청한 컴포지션 속성의 포인터입니다. 이것은 목표 절을 바꾸기 위해 쓰일 수 있습니다. 새로운 속성은 아래의 기본 규칙을 따라야 합니다.

 lpRead가 NULL이 아닐 경우 이는 어플리케이션이 요청한 발음 문자열의 속성입니다. IME는 발음 문자열의 속성을 컴포지션 문자열 구조체를 통해 수정할 수 있고 컴포지션 문자열의 속성과 동기화해야 합니다. 또한 WM_IME_COMPOSITION 메시지를 생성합니다.

 IME는 컴포지션 문자열의 속성과 컴포지션 발음 문자열을 새로 지정된 이 속성으로 동기화합니다. 어플리케이션이 lpComp와 lpRead를 모두 설정하였다면 IME는 이들 속성을 참조하여 컴포지션 문자열을 설정하고 WM_IME_COMPOSITION 메시지를 생성합니다.

 어플리케이션은 컴포지션 문자열의 속성을 변경할 수 있으며 한 절에 있는 문자들은 같은 속성을 가집니다. 대상 절은 ATTR_TARGET_CONVERTED 또는 ATTR_TARGET_NOTCONVERTED 속성을 가져야 합니다. 다음과 같이 대상 절은 SCS_CHANGEATTR를 사용해 수정될 수 있습니다.

[제목없음1]

 

 어플리케이션은 ATTR_TARGET_CONVERTED에서 ATTR_CONVERTED, ATTR_CONVERTED에서 ATTR_TARGET_CONVERTED, ATTR_TARGET_NOTCONVERTED에서 ATTR_INPUT, 또는 ATTR_INPUT에서 ATTR_TARGET_NOTCONVERTED으로 수정 가능합니다.

 어플리케이션이 전환할 수 있는 속성 조합

 

 이는 어플리케이션이 절이 IME에 의해 변환될 수 있는지 아닌지를 결정하는 것이 아님을 뜻합니다. ATTR_INPUT_ERROR은 사용자가 다시 문자를 입력하거나 어플리케이션이 새 문자를 설정하였을때만 전환될 수 있습니다.

5.3.3 SCS_CHANGECLAUSE

 어플리케이션은 새로운 절 정보를 설정할 수 있습니다.

 한 번에 한 절만이 전환될 수 있으며 전환된절은 대상 절이 되어야 합니다. 그렇지 않으면 이 함수는 오류를 야기합니다.

 lpComp만이 주어진 경우 IME는 컴포지션 문자열의 발음 절 정보를 이 새로운 절 정보로 동기화시킵니다. lpRead만이 주어진 경우 IME는 컴포지션 문자열의 절 정보와 동기화시킵니다. 두 변수가 모두 주어진 경우 IME는 양쪽 모두를 모두를 참조할 수 있으며 필요한 경우 이들을 동기화시킵니다.

절 변환의 유형

 

 

 한번에 한 절만이 전환될 수 있습니다.

 :잘못된 절 변환의 예:

둘 또는 이상의 절이 업데이트 됨

대상 절이 업데이트 안 됨

 이 함수를 호출한 후에는 IME는 WM_IME_COMPOSITION 메시지를 생성할 것입니다. IME는 컴포지션 문자열, 속성, 절 정보의 전부를 업데이트 할 수 있습니다. 이 때, 대상 절을 제외한 절과 속성 정보는 바뀔 수 있습니다. 어플리케이션은 속성과 절 정보를 재설정해야 합니다. IME는 한 절을 수정하면서 전체 컴포지션 문자열의 절을 수정할 것이기 때문입니다.