如何使用斷詞和換行資訊
豐富的編輯控制項會呼叫稱為斷詞程式的函式,以尋找單字之間的斷點,並判斷其可以斷行的位置。 當執行自動換行作業,以及處理 CTRL+向左鍵和 CTRL+向右鍵的組合時,控件會使用此資訊。 應用程式可以將訊息傳送至豐富的編輯控件,以取代默認斷詞程式、擷取斷詞資訊,以及判斷指定字元落在哪一行。
您需要知道的事項
技術
先決條件
- C/C++
- Windows 使用者介面程序設計
指示
使用斷詞和換行資訊
豐富文本編輯控件的斷詞程式類似於編輯控件的程式,但它們具有額外的功能:這兩種控件的斷詞程式都能判斷字元是否為分隔符,並可在指定位置前後尋找最近的斷詞位置。 分隔符是標記文字結尾的字元,例如空格。 通常,在編輯控件中,只有在分隔符之後才會發生斷詞。 不過,不同的規則適用於大多數亞洲語言。
豐富文本編輯控制的斷詞程式也會將字元分組為字元類別,每個字元都是由範圍為0x00到0x0F的值所識別。 中斷會發生在分隔符後面或不同類別的字元之間。 因此,具有英數字元和標點符號字元不同類別的斷詞程式會在字串「Win.doc」中尋找兩個分詞點(句號之前和之後)。
字元的類別可以結合零或多個斷詞標記,以形成 8 位值。 執行自動換行操作時,豐富文本編輯控件會使用斷字標誌來判斷可以斷行的位置。 Rich Edit 使用下列斷詞標誌。
旗 | 描述 |
---|---|
WBF_BREAKAFTER | 行可能會在字元之後中斷。 |
WBF_BREAKLINE | 字符是分隔符。 分隔符標示文字的結尾。 分隔符之後可能會中斷行。 |
WBF_ISWHITE | 字元是空格符。 換行時,行長不計入結尾的空白字元。 |
WBF_BREAKAFTER 值用於允許在不標示單詞結尾的字元後換行,例如連字號。
您可以使用 EM_SETWORDBREAKPROC 訊息,將豐富編輯控制件的預設斷詞程式取代為您自己的程式。 如需斷詞程式的詳細資訊,請參閱 EditWordBreakProc 函式的描述。
注意
由於多語系斷詞的複雜性,因此不建議替換 Microsoft Rich Edit 2.0 及更高版本。
針對 Microsoft Rich Edit 1.0,您可以使用 EM_SETWORDBREAKPROCEX 訊息,將預設的擴充斷詞程式取代為 EditWordBreakProcEx 函式。 此函式提供文字的其他資訊,例如字元集。 您可以使用 EM_GETWORDBREAKPROCEX 訊息來擷取目前擴充斷詞程式的位址。 請注意,Microsoft Rich Edit 2.0 和更新版本不支援 EditWordBreakProcEx、EM_GETWORDBREAKPROCEX和 EM_SETWORDBREAKPROCEX。
您可以使用 EM_FINDWORDBREAK 訊息來尋找斷詞符號,或判斷字元的類別和斷詞旗標。 接著,控件會呼叫其斷詞程式,以取得要求的資訊。
若要判斷指定字元落在哪一行,您可以使用 EM_EXLINEFROMCHAR 訊息。
相關主題