共用方式為


組合字串

組合字串是組合視窗中的目前文字。 這是輸入法轉換成最終字元的文字。 每個組合字串都包含一或多個「子句」。 子句是 IME 可以轉換成最終字元的最小字元組合。 若要取得和設定組合字串,應用程式會分別呼叫 ImmGetCompositionStringImmSetCompositionString 函式。

當使用者在組合視窗中輸入文字時,IME 會追蹤組合字串的狀態。 此狀態包括屬性資訊、子句資訊、輸入資訊和游標位置。 應用程式可以使用 ImmGetCompositionString 函式來擷取組合狀態。

屬性資訊會在8位值的陣列中轉譯,指定組合字串中的字元狀態。 一個子句的所有字元都必須具有相同的屬性。 陣列包含字串中每一個位元組的值,包括字串中任何雙位元組字元的前導位元組和次位元組的各一個位元組。 對於陣列中的每個值,位0到3可以是下列值的其中一個組合。

價值 意義
ATTR_輸入 使用者輸入的字元。 輸入法尚未轉換此字元。
輸入錯誤 輸入法無法轉換的錯誤字元。 例如,IME 無法將一些同音結合在一起。
ATTR_TARGET_CONVERTED 用戶選取的字元,然後由 IME 轉換。
ATTR_CONVERTED 輸入法已轉換的字元。
目標未轉換 正在轉換的字元。 用戶已選取此字元,但 IME 尚未轉換。
ATTR_FIXEDCONVERTED 輸入法不再轉換的字元。

 

所有其他值都會保留。 在日文中,任何具有 ATTR_INPUT 屬性的未轉換字元都是平假名、片假名或英數位元。 在韓文中,此屬性代表 IME 尚未轉換的韓文字元。 在繁體中文和簡體中文中,每個輸入法可以限制其字元在某個範圍內。

組合字串狀態中包含的子句資訊是32位值的陣列,指定子句在組合字串中的位置。 陣列包含每個子句的對應值,以及一個表示完整字串長度的最終值。 陣列中的每個值都會指定從字串開頭到 子句的位移,以位元組為單位。 第一個值一律為0,因為第一個子句一律從字元串開頭開始。 例如,如果字串有兩個子句,子句資訊就會有三個值:第一個值為0,第二個值是第二個子句的位移,而第三個值則是字元串的長度。 若為 Unicode,子句的位置會以 Unicode 字元計算,而字串的長度是 Unicode 字元的大小。

在組合字串狀態中包含的輸入資訊是一個以空字元結尾的字串,表示使用者在鍵盤上所輸入的字元。

組合字串狀態中包含的游標位置是指游標相對於組合字串中字元的位置。 值是字串的起始位置的位移量,以位元組為單位。 如果此值為 0,則游標會緊接在字串中的第一個字元之前。 如果值等於字串的長度,則游標會緊接在最後一個字元之後。 如果值為 1,則游標不存在。 針對 Unicode,位置和長度都是以 Unicode 字元來測量。

您的應用程式可以使用 ImmSetCompositionString 函式來設定組合狀態的組成字串或元素。 為了確保組合視窗會根據這些變更更新其外觀,函式可讓應用程式將通知訊息傳送至視窗。 通常,設定多個組合狀態元素的應用程式會停用此函式的所有通知,唯獨保留最後一次呼叫的通知,以便只為組合視窗產生一個通知訊息。

最後,編輯控制支援兩則訊息來變更輸入法的組合字串處理。 如需詳細資訊,請參閱 EM_GETIMESTATUSEM_SETIMESTATUS。 如需編輯控制項的詳細資訊,請參閱 編輯控制件

關於輸入法管理員