Win32 API 日本語リファレンス
ホーム › UI.Controls › EDITWORDBREAKPROCW

EDITWORDBREAKPROCW

コールバック

シグネチャ

INT EDITWORDBREAKPROCW(
    LPWSTR lpch,
    INT ichCurrent,
    INT cch,
    WORD_BREAK_ACTION code
);

パラメーター

フィールド型説明
lpchLPWSTRエディットコントロールのテキストへのポインターです。
ichCurrentINTテキストのバッファー内の文字位置を示すインデックスで、関数がワードブレークの検査を開始すべき位置を示します。
cchINTエディットコントロールのテキストに含まれる TCHARs の数です。ANSI テキストの場合はバイト数、Unicode テキストの場合は WCHAR の数です。
codeWORD_BREAK_ACTION

コールバック関数が実行するアクションです。このパラメーターには、次のいずれかの値を指定できます。

値 意味
WB_CLASSIFY
指定した位置にある文字の文字クラスとワードブレークフラグを取得します。この値はリッチエディットコントロールで使用します。
WB_ISDELIMITER
指定した位置にある文字が区切り文字かどうかを調べます。
WB_LEFT
指定した位置より左にある単語の先頭を検索します。
WB_LEFTBREAK
指定した位置より左にある単語終端の区切り文字を検索します。この値はリッチエディットコントロールで使用します。
WB_MOVEWORDLEFT
指定した位置より左にある単語の先頭を検索します。この値は CTRL+LEFT キーの処理中に使用されます。この値はリッチエディットコントロールで使用します。
WB_MOVEWORDRIGHT
指定した位置より右にある単語の先頭を検索します。この値は CTRL+RIGHT キーの処理中に使用されます。この値はリッチエディットコントロールで使用します。
WB_RIGHT
指定した位置より右にある単語の先頭を検索します。これは右揃えのエディットコントロールで役立ちます。
WB_RIGHTBREAK
指定した位置より右にある単語終端の区切り文字を検索します。これは右揃えのエディットコントロールで役立ちます。この値はリッチエディットコントロールで使用します。

公式ドキュメント

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 の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)