작곡
컴퍼지션은 텍스트 서비스가 애플리케이션과 사용자에게 입력 텍스트가 여전히 변경 상태임을 지정할 수 있도록 하는 임시 입력 상태입니다. 애플리케이션은 컴퍼지션에 대한 표시 특성 정보를 가져오고 이 정보를 사용하여 컴퍼지션 상태를 사용자에게 표시할 수 있습니다.
컴퍼지션을 사용하는 한 가지 예는 음성 입력 중입니다. 사용자가 말하는 동안 음성 텍스트 서비스는 컴퍼지션을 만듭니다. 이 컴퍼지션은 전체 음성 입력이 완료될 때까지 그대로 유지됩니다. 세션이 종료되면 음성 텍스트 서비스가 컴퍼지션을 종료합니다.
애플리케이션은 컴퍼지션의 존재 여부와 부재를 사용하여 텍스트를 표시하는 방법과 텍스트에서 처리해야 하는 작업을 결정합니다. 예를 들어 사용자가 음성 엔진을 사용하여 텍스트를 입력하는 경우 애플리케이션은 컴퍼지션 텍스트에 대한 맞춤법 또는 문법 검사를 수행해서는 안 됩니다. 텍스트는 컴퍼지션이 종료될 때까지 불완전한 것으로 간주됩니다.
Text Services
텍스트 서비스는 ITfContextComposition::StartComposition호출하여 컴퍼지션을 만듭니다. 텍스트 서비스는 필요에 따라 컴퍼지션 이벤트 알림을 받는 ITfCompositionSink 개체를 구현할 수 있습니다. StartComposition은 텍스트 서비스에서 참조를 유지하고 컴퍼지션을 수정하고 종료하는 데 사용하는 ITfComposition 개체를 반환합니다. 텍스트 서비스는 ITfComposition::EndComposition호출하여 컴퍼지션을 종료합니다.
텍스트 서비스에서 컴퍼지션을 만들려는 경우 응용 프로그램에서 컴퍼지션의 일부인 텍스트를 표준 텍스트와 다르게 표시할 수 있도록 디스플레이 특성도 지원해야 합니다. 자세한 내용은 표시 특성 제공 참조하세요.
응용 프로그램
애플리케이션은 ITfContextOwnerCompositionSink 싱크를 설치하여 컴퍼지션의 생성, 변경 및 종료를 모니터링할 수 있습니다. 컴퍼지션이 시작되면 ITfContextOwnerCompositionSink::OnStartComposition 호출됩니다. 마찬가지로 컴퍼지션이 변경되거나 종료되면 ITfContextOwnerCompositionSink::OnUpdateComposition 및 ITfContextOwnerCompositionSink::OnEndComposition 각각 호출됩니다.
다음은 컴퍼지션을 사용하여 문서를 업데이트하는 일반적인 절차입니다.
- ITextStoreACP::InsertTextAtSelection 또는 ITextStoreAnchor::InsertTextAtSelection 일반적으로 초기 텍스트를 컴퍼지션에 삽입하는 데 사용됩니다.
- 컴퍼지션은 InsertTextAtSelection반환된 텍스트 범위를 사용하여 ITfContextComposition::StartComposition호출로 시작됩니다.
- 음성 또는 키보드 항목과 같은 새 입력을 받으면 애플리케이션은 ITextStoreACP::SetText 또는 ITextStoreAnchor::SetText사용하여 컴퍼지션을 업데이트합니다.
- 애플리케이션이 컴퍼지션을 종료할 때라고 판단되면 ITfComposition::EndComposition호출합니다.
애플리케이션은 컴퍼지션이 활성 상태일 때뿐만 아니라 텍스트 서비스에서 제공하는 표시 특성을 사용하여 항상 텍스트 표시를 수정해야 합니다. 자세한 내용은 표시 특성 사용하여참조하세요.
필요한 경우 애플리케이션은 ITfContextOwnerCompositionServices::TerminateComposition호출하여 컴퍼지션을 종료할 수 있습니다.