如何使用斷詞和換行資訊
豐富的編輯控制項會呼叫稱為斷詞程式的函式,以尋找單字之間的斷點,並判斷其可以斷行的位置。 當執行自動換行作業,以及處理 CTRL+向左鍵和 CTRL+向右鍵組合時,控件會使用這項資訊。 應用程式可以傳送訊息至 Rich Edit 控制項來取代預設斷字程序、擷取斷字資訊,以及決定指定的字元落在哪一行的位置。
您需要知道的事項
技術
必要條件
- 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 訊息。
相關主題