컴퍼지션 문자열
컴퍼지션 문자열은 컴퍼지션 창의 현재 텍스트입니다. IME가 최종 문자로 변환하는 텍스트입니다. 각 컴퍼지션 문자열은 하나 이상의 "절"로 구성됩니다. 절은 IME가 최종 문자로 변환할 수 있는 가장 작은 문자 조합입니다. 컴퍼지션 문자열을 가져와서 설정하기 위해 애플리케이션은 각각 ImmGetCompositionString 및 ImmSetCompositionString 함수를 호출합니다.
사용자가 컴퍼지션 창에 텍스트를 입력하면 IME는 컴퍼지션 문자열의 상태 추적합니다. 이 상태 특성 정보, 절 정보, 입력 정보 및 커서 위치를 포함합니다. 애플리케이션은 ImmGetCompositionString 함수를 사용하여 컴퍼지션 상태 검색할 수 있습니다.
특성 정보는 컴퍼지션 문자열의 문자 상태 지정하는 8비트 값 배열로 렌더링됩니다. 한 절의 모든 문자에는 동일한 특성이 있어야 합니다. 배열에는 문자열에 있는 모든 더블바이트 문자의 리드에 대해 각각 1바이트, 두 번째 바이트를 포함하여 문자열의 각 바이트에 대해 하나의 값이 포함됩니다. 배열의 각 값에 대해 비트 0~3은 다음 값의 한 조합일 수 있습니다.
값 | 의미 |
---|---|
ATTR_INPUT | 사용자가 입력하는 문자입니다. IME는 아직 이 문자를 변환하지 않았습니다. |
ATTR_INPUT_ERROR | IME에서 변환할 수 없는 오류 문자입니다. 예를 들어 IME는 일부 자음을 함께 넣을 수 없습니다. |
ATTR_TARGET_CONVERTED | 사용자가 선택한 다음 IME로 변환된 문자입니다. |
ATTR_CONVERTED | IME가 이미 변환한 문자입니다. |
ATTR_TARGET_NOTCONVERTED | 변환되는 문자입니다. 사용자가 이 문자를 선택했지만 IME가 아직 변환하지 않았습니다. |
ATTR_FIXEDCONVERTED | IME가 더 이상 변환하지 않는 문자입니다. |
다른 모든 값은 예약되어 있습니다. 일본어에서는 ATTR_INPUT 특성을 갖는 변환되지 않은 문자는 히라가나, 가타카나 또는 영숫자 문자입니다. 한국어에서 이 특성은 IME가 아직 변환되지 않은 한글 문자를 나타냅니다. 중국어 번체 및 중국어 간체에서는 각 IME가 일부 범위 내에서 해당 문자를 제한할 수 있습니다.
컴퍼지션 문자열 상태 포함된 절 정보는 컴퍼지션 문자열에 있는 절의 위치를 지정하는 32비트 값의 배열입니다. 배열에는 각 절에 대해 하나의 값과 전체 문자열의 길이를 지정하는 최종 값이 포함됩니다. 배열의 각 값은 문자열의 시작부터 절까지 오프셋(바이트)을 지정합니다. 첫 번째 절은 항상 문자열의 시작 부분에서 시작되므로 첫 번째 값은 항상 0입니다. 예를 들어 문자열에 두 개의 절이 있는 경우 절 정보에는 세 가지 값이 있습니다. 첫 번째 값은 0이고 두 번째 값은 두 번째 절의 오프셋이고 세 번째 값은 문자열의 길이입니다. 유니코드의 경우 절의 위치는 유니코드 문자로 계산되고 문자열의 길이는 유니코드 문자의 크기입니다.
컴퍼지션 문자열 상태 포함된 입력 정보는 사용자가 키보드에서 입력하는 문자를 나타내는 null로 끝나는 문자열입니다.
컴퍼지션 문자열 상태 포함된 커서 위치는 컴퍼지션 문자열의 문자를 기준으로 커서의 위치를 나타내는 값입니다. 값은 문자열의 시작 부분에서 오프셋(바이트)입니다. 이 값이 0이면 커서가 문자열의 첫 번째 문자 바로 앞에 있습니다. 값이 문자열의 길이와 같으면 커서는 마지막 문자 바로 뒤에 있습니다. 값이 1이면 커서가 없습니다. 유니코드의 경우 위치와 길이는 모두 유니코드 문자로 측정됩니다.
애플리케이션은 ImmSetCompositionString 함수를 사용하여 컴퍼지션 상태 컴퍼지션 문자열 또는 요소를 설정할 수 있습니다. 컴퍼지션 창이 이러한 변경 내용에 따라 모양을 업데이트하도록 하기 위해 함수를 사용하면 애플리케이션이 창에 알림 메시지를 보낼 수 있습니다. 컴퍼지션 상태 요소의 조합을 설정하는 애플리케이션은 일반적으로 컴퍼지션 창에 대해 하나의 알림 메시지만 생성되도록 이 함수에 대한 마지막 호출을 제외한 모든 알림에 대해 알림을 사용하지 않도록 설정합니다.
마지막으로 편집 컨트롤은 IME에서 컴퍼지션 문자열 처리를 변경하기 위한 두 개의 메시지를 지원합니다. 자세한 내용은 EM_GETIMESTATUS 및 EM_SETIMESTATUS 참조하세요. 편집 컨트롤에 대한 자세한 내용은 컨트롤 편집을 참조 하세요.
관련 항목