成分
組合是暫時的輸入狀態,可讓文字服務同時指定給應用程式,以及輸入文字仍在變更狀態的使用者。 應用程式可以和應該取得組合的顯示內容資訊,並使用這項資訊向使用者顯示組合狀態。
使用組合的其中一個範例是在語音輸入期間。 當使用者說話時,語音文字服務會建立組合。 此組合會保持不變,直到整個語音輸入完成為止。 會話結束時,語音文字服務會終止組合。
應用程式會使用目前狀態和缺少組合來判斷如何顯示文字,以及應該對文字執行哪些處理。 例如,如果使用者使用語音引擎來輸入文字,應用程式就不應該在任何組合文字上執行任何拼字或文法檢查。 文字會被視為不完整,直到組合終止為止。
文字服務會呼叫 ITfCoNtextComposition::StartComposition來建立組合。 文字服務可以選擇性地實作接收組合事件通知的 ITfCompositionSink 物件。 StartComposition 會傳回文字服務保留參考的 ITfComposition 物件,並用來修改和終止組合。 文字服務會呼叫 ITfComposition::EndComposition來終止組合。
如果文字服務要建立組合,它也應該支援顯示內容,讓應用程式能夠顯示與標準文字不同的組合一部分的文字。 如需詳細資訊,請參閱 提供顯示內容。
應用程式可以藉由安裝 ITfCoNtextOwnerCompositionSink 接收來監視組合的建立、變更和終止。 啟動組合時,會呼叫 ITfCoNtextOwnerCompositionSink::OnStartComposition 。 同樣地,當組合變更或終止時,將會分別呼叫 ITfCoNtextOwnerCompositionSink::OnUpdateComposition 和 ITfCoNtextOwnerCompositionSink::OnEndComposition 。
以下是使用組合來更新檔的一般程式。
- ITextStoreACP::InsertTextAtSelection 或 ITextStoreAnchor::InsertTextAtSelection 通常用來將初始文字插入組合中。
- 撰寫是以呼叫 ITfCoNtextComposition::StartComposition開始,使用 InsertTextAtSelection所傳回的文字範圍。
- 當它收到語音或鍵盤輸入之類的新輸入時,應用程式會使用 ITextStoreACP::SetText 或 ITextStoreAnchor::SetText更新組合。
- 當應用程式判斷要結束組合時,它會呼叫 ITfComposition::EndComposition。
應用程式應該使用文字服務所提供的顯示內容,隨時修改文字的顯示,而不只是使用中組合時。 如需詳細資訊,請參閱 使用顯示內容。
如有必要,應用程式可以呼叫 ITfCoNtextOwnerCompositionServices::TerminateComposition來終止組合。