共用方式為


成分

組合是暫時的輸入狀態,可讓文字服務同時指定給應用程式,以及輸入文字仍處於變更狀態的使用者。 應用程式可以且應該取得組合的顯示屬性資訊,並使用這項資訊向使用者顯示組合狀態。

使用組合的其中一個範例是在語音輸入期間。 當用戶說話時,語音文字服務會建立組合。 此組合會保持不變,直到整個語音輸入完成為止。 會話結束時,語音文字服務會終止組合。

應用程式會使用組合是否存在,來決定如何顯示文字,以及應該對文字執行哪些處理。 例如,如果使用者使用語音引擎來輸入文字,應用程式就不應該在任何組合文字上執行任何拼字或文法檢查。 文字會被視為不完整,直到撰寫終止為止。

文字服務

文字服務會呼叫 ITfContextComposition::StartComposition來建立組合。 文字服務可以選擇性地實作接收組合事件通知的 ITfCompositionSink 物件。 StartComposition 會傳回 ITfComposition 物件,文字服務會保留對 的參考,並使用 來修改和終止組合。 文字服務會呼叫 ITfComposition::EndComposition來終止組合。

如果文字服務要建立組合,它也應該支持顯示屬性,讓應用程式能夠顯示與標準文字不同之組合的文字。 如需詳細資訊,請參閱 提供顯示屬性

應用

應用程式可以藉由安裝 ITfContextOwnerCompositionSink 接收,來監視組合的建立、變更和終止。 當組合啟動時,呼叫 ITfContextOwnerCompositionSink::OnStartComposition。 同樣地,當組合變更或終止時,ITfContextOwnerCompositionSink::OnUpdateCompositionITfContextOwnerCompositionSink::OnEndComposition 分別呼叫。

以下是使用組合更新檔的典型程式。

  1. ITextStoreACP::InsertTextAtSelectionITextStoreAnchor::InsertTextAtSelection 通常用來將初始文字插入組合中。
  2. 使用 insertTextAtSelection 傳回的文字範圍,以呼叫 ITfContextComposition::StartComposition開始。
  3. 當它收到語音或鍵盤輸入等新輸入時,應用程式會使用 ITextStoreACP::SetTextITextStoreAnchor::SetText更新組合。
  4. 當應用程式判斷是時候結束組合時,它會呼叫 ITfComposition::EndComposition

應用程式應該使用文字服務所提供的顯示屬性,隨時修改文字的顯示,而不只是當組合作用中時。 如需詳細資訊,請參閱使用顯示屬性

如有必要,應用程式可以呼叫 ITfContextOwnerCompositionServices::TerminateComposition來終止組合。