EDITWORDBREAKPROCW
コールバックシグネチャ
INT EDITWORDBREAKPROCW(
LPWSTR lpch,
INT ichCurrent,
INT cch,
WORD_BREAK_ACTION code
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| lpch | LPWSTR | エディットコントロールのテキストへのポインターです。 |
| ichCurrent | INT | テキストのバッファー内の文字位置を示すインデックスで、関数がワードブレークの検査を開始すべき位置を示します。 |
| cch | INT | エディットコントロールのテキストに含まれる TCHARs の数です。ANSI テキストの場合はバイト数、Unicode テキストの場合は WCHAR の数です。 |
| code | WORD_BREAK_ACTION | コールバック関数が実行するアクションです。このパラメーターには、次のいずれかの値を指定できます。 |
公式ドキュメント
EM_SETWORDBREAKPROC メッセージと共に使用される、アプリケーション定義のコールバック関数です。複数行のエディットコントロールまたはリッチエディットコントロールは、テキストの行を分割するために EditWordBreakProc 関数を呼び出します。
EDITWORDBREAKPROC 型は、このコールバック関数へのポインターを定義します。EditWordBreakProc は、アプリケーション定義の関数名のプレースホルダーです。
戻り値
型: int
code パラメーターに WB_ISDELIMITER が指定されている場合、指定した位置にある文字が区切り文字であれば戻り値は 0 以外 (TRUE)、そうでなければ 0 です。code パラメーターに WB_CLASSIFY が指定されている場合、戻り値は指定した位置にある文字の文字クラスとワードブレークフラグです。それ以外の場合、戻り値はテキストのバッファー内の単語の先頭を示すインデックスです。
解説(Remarks)
キャリッジリターンとそれに続くラインフィードは、コールバック関数で 1 つの単語として扱う必要があります。2 つのキャリッジリターンとそれに続くラインフィードも、1 つの単語として扱う必要があります。
アプリケーションは、EM_SETWORDBREAKPROC メッセージでコールバック関数のアドレスを指定して、そのコールバック関数をインストールする必要があります。
Rich Edit 1.0:Microsoft Rich Edit 1.0 は、EditWordBreakProc に ANSI 文字のみを渡します。リッチエディットコントロールでは、代わりに EM_SETWORDBREAKPROCEX メッセージを使用して、既定の拡張ワードブレークプロシージャを EditWordBreakProcEx コールバック関数に置き換えることができます。この関数は、文字セットなど、テキストに関する追加の情報を提供します。
Rich Edit 2.0 以降:Microsoft Rich Edit 2.0 以降は、EditWordBreakProc に Unicode 文字のみを渡します。そのため ANSI アプリケーションでは、リッチエディットから渡された Unicode 文字列を WideCharToMultiByte で変換し、インデックスを適切に読み替える必要があります。
winuser.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいてこの関数の ANSI 版または Unicode 版を自動的に選択するエイリアスとして EDITWORDBREAKPROC を定義します。エンコーディング中立のエイリアスの使用と、エンコーディング中立ではないコードを混在させると、不一致が生じてコンパイルエラーや実行時エラーの原因となることがあります。詳細については、関数プロトタイプの規約 を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)