Word と改行情報を使用する方法

リッチ エディット コントロールは、単語区切りプロシージャと呼ばれる関数を呼び出して、単語間の区切りを探し、改行できる場所を決定します。 コントロールは、右端での折り返し操作を実行するとき、および Ctrl + 左方向キーと Ctrl + 右方向キーの組み合わせを処理するとき、この情報を使用します。 アプリケーションは、メッセージをリッチ エディト コントロールに送信して、既定のワード区切りプロシージャの置き換え、ワード区切り情報の取得、特定の文字が配置される行の決定を行うことができます。

知っておくべきこと

テクノロジ

前提条件

  • C/C++
  • Windows ユーザー インターフェイス プログラミング

手順

Word と改行情報の使用

リッチ エディット コントロールの単語区切りプロシージャは、編集コントロールの単語区切りプロシージャと似ていますが、追加の機能があります。どちらの種類のコントロールの単語区切りプロシージャも、文字が区切り記号であるかどうかを判断し、指定された位置の前後に最も近い単語区切りを見つけることができます。 区切り記号は、スペースなどの、単語の末尾をマークする文字です。 通常、編集コントロールでは、区切り記号の後にのみ単語区切りが発生します。 ただし、ほとんどのアジア言語には異なるルールが適用されます。

さらに、リッチ エディット コントロール用の単語区切りプロシージャは、文字を文字クラスにグループ化し、それぞれ 0x0F ~ 0x00 の範囲の値によって識別されます。 区切りは、区切り記号の後、または異なるクラスの文字間で発生します。 したがって、英数字と句読点文字のクラスが異なる単語区切りプロシージャは、文字列 "Win.doc" で 2 つの単語区切りを見つけます (ピリオドの前後)。

文字のクラスを 0 個以上の単語区切りフラグと組み合わせ、8 ビット値を形成できます。 右端での折り返し操作を実行するとき、リッチエディット コントロールは、単語区切りを使用して改行できる場所を決定します。 リッチ エディットでは、次の単語区切りフラグが使用されます。

フラグ 説明
WBF_BREAKAFTER 文字の後で行が分割される場合があります。
WBF_BREAKLINE この文字は区切り記号です。 区切り記号は、単語の末尾を示します。 区切り記号の後に行が分割されることがあります。
WBF_ISWHITE この文字は空白文字です。 折り返し時、末尾の空白文字は行の長さに含められません。

 

WBF_BREAKAFTER 値は、ハイフンなど、単語の末尾をマークしない文字の後に折り返しを許可するために使用されます。

EM_SETWORDBREAKPROC メッセージを使用することにより、リッチ エディット コントロールの既定の単語区切りプロシージャを独自のプロシージャに置き換えることができます。 単語区切りプロシージャについて詳しくは、EditWordBreakProc 関数の説明をご覧ください。

Note

多言語の単語区切りは複雑なため、Microsoft Rich Edit 2.0 以降では、この置き換えは推奨されません。

 

Microsoft Rich Edit 1.0 では、EM_SETWORDBREAKPROCEX メッセージを使用して、既定の拡張単語区切りプロシージャを EditWordBreakProcEx 関数に置き換えることができます。 この関数は、文字セットなど、テキストに関する追加情報を提供します。 EM_GETWORDBREAKPROCEX メッセージを使用して、現在の拡張単語区切りプロシージャのアドレスを取得できます。 Microsoft Rich Edit 2.0 以降では、EditWordBreakProcExEM_GETWORDBREAKPROCEXEM_SETWORDBREAKPROCEX はサポートされない点に注意してください。

EM_FINDWORDBREAK メッセージを使用して、単語区切りを検索したり、文字のクラスと単語区切りフラグを判断したりできます。 さらに、コントロールは単語区切りプロシージャを呼び出し、要求された情報を取得します。

特定の文字がどの行にあるかを判断するには、EM_EXLINEFROMCHAR メッセージを使用できます。

リッチ エディット コントロールの使用

Windows コモン コントロールのデモ (CppWindowsCommonControls)