編集コントロールについて

編集コントロール は、ユーザーがテキストの入力と編集を行えるようにするために、通常はダイアログ ボックスで使用される四角形のコントロール ウィンドウです。

編集 コントロールでは、文字が 2 バイトである Unicode 文字セットと、文字が 1 バイトである ANSI 文字セットの両方がサポートされます。 Unicode 文字セットと ANSI 文字セットの詳細については、「Unicode および文字セット」を参照してください。

リッチ 編集 コントロール では、 システム編集コントロールでは使用できない多くの機能がサポートされています。 詳細については、「リッチ編集コントロール」を参照してください。

この概要では、次のトピックについて説明します。

コントロール機能の編集

選択すると、カーソルを示す点滅キャレットが編集コントロールに表示されます。 ユーザーは、キーボードまたはマウスを使用して、テキストの入力、カーソルの移動、編集するテキストの選択を行うことができます。 編集 コントロールは、 WM_COMMAND メッセージの 形式で親ウィンドウに通知コードを送信します。 編集コントロールからのメッセージの詳細については、「コントロール通知メッセージの編集」を参照してください。 親ウィンドウは、 SendDlgItemMessage 関数を呼び出すことによって、ダイアログ ボックスの編集コントロールにメッセージを送信できます。 一部のメッセージは、定義済みのマクロを使用して送信することもできます。

システムは、単一行編集コントロールと複数行編集コントロールの両方を提供します。 編集 コントロールは、EDIT ウィンドウ クラスに属します。

コンボ ボックスは、編集コントロールの多くの機能とリスト ボックスを組み合わせたコントロールです。 コンボ ボックスでは、編集コントロールに現在の選択範囲が表示され、リスト ボックスにはユーザーが選択できるオプションが表示されます。 コンボ ボックスの詳細については、「コンボ ボックス」を参照してください。

多くの開発者は、共通のダイアログ ボックス ライブラリ (Comdlg32.dll) で提供されているダイアログ ボックスを使用して、カスタマイズされた編集コントロールが必要になる可能性があるタスクを実行します。 一般的なダイアログ ボックスの詳細については、「共通ダイアログ ボックス ライブラリ」を参照してください。

コントロールの種類とスタイルを編集する

個々の編集コントロールには、同時に複数のスタイルを設定できます。 ほとんどの開発者は、ツールを使用してダイアログ ボックスを開発するため、編集コントロール スタイルを明示的に指定する必要がない場合があります。 ただし、アプリケーションで CreateWindow または CreateWindowEx 関数を使用して編集コントロールを作成する場合は、これらの編集コントロール スタイルを指定する必要があります。 コントロール スタイルの編集の表については、「コントロール スタイルの編集」を参照してください。

すべての編集コントロールは、編集コントロールの外観と機能を定義するスタイル値の組み合わせを指定します。 スタイル値は、単一行または複数行の編集コントロールの外観を確立できます。コントロール内のテキストを配置します。をクリックして、テキストが編集コントロールに表示される方法を決定します。

複数行のスタイル

編集コントロールには 2 つの線スタイルがあります。 既定値は 1 行の編集コントロールです。 アプリケーションでは、 ES_MULTILINE スタイルを使用して複数行の編集コントロールを作成することもできます。

スクロール スタイル

ES_AUTOHSCROLL スタイルは、ユーザーがテキストを入力するときに、必要に応じてテキストを水平方向にスクロールするように編集コントロールに指示します。 このスタイルを指定しない場合、編集 コントロールは水平方向にスクロールできません。 ES_AUTOHSCROLL を使用しない 1 行の編集コントロールの場合、コントロールの表示領域を埋める文字のみが受け入れられます。 ES_AUTOHSCROLL を使用しない複数行の編集コントロールの場合、ユーザーが 1 行に表示できるテキストよりも多くのテキストを入力すると、テキストは次の行に折り返されます。 複数行の編集コントロールに ES_AUTOHSCROLL が指定されている場合、ユーザーが 1 行に表示できるよりも多くのテキストを入力すると、コントロールは水平方向にスクロールします。テキストは折り返されません。

ES_AUTOHSCROLL は、 WS_HSCROLL スタイルを持つ左揃えの複数行編集コントロールに自動的に適用されます。 つまり、水平スクロール バーを持つ左揃えの複数行編集コントロールは、自動的に水平方向にスクロールします。

ES_AUTOHSCROLL は、左揃えではない複数行の編集コントロールでは無視されます。 中央揃えおよび右揃えの複数行編集コントロールを水平方向にスクロールできない

ES_AUTOVSCROLL スタイルは、ユーザーが編集コントロールに表示できるテキストよりも多くのテキストを入力したときに、テキストを垂直方向にスクロールするように編集コントロールに指示します。 このスタイルは、複数行の編集コントロールにのみ適用されます。 このスタイルが複数行の編集コントロールに指定されていない場合、表示できるテキストよりも多くのテキストが入力された場合、編集コントロールは入力を受け入れなくなります。

配置スタイル

システムが編集コントロール内のテキストを整列させる 3 つのスタイルがあります。 ES_LEFTES_CENTER、 および ES_RIGHT スタイルは、それぞれテキストの左揃え、中央揃え、右揃えを決めます。 右揃えおよび中央揃えの複数行編集コントロールは、 ES_AUTOHSCROLL スタイルを持つことはできません。つまり、水平方向にスクロールすることはできません。

編集コントロールの配置スタイルを動的に変更することはできませんが、次の手法を使用してこの制限を回避できます。

  • アプリケーションで必要なスタイルごとに 1 つずつ、複数の編集コントロールを作成し、必要に応じて切り替えます。
  • 必要に応じて目的のスタイルで新しい編集コントロールを作成し、新しいコントロールに切り替えます。

テキストスタイルと入力スタイル

アプリケーションでは、スタイルを使用して、編集コントロールのテキストの表示方法を指定できます。 ES_LOWERCAS スタイルでは、編集コントロールに入力されたすべての大文字が小文字に変換されます。 同様に、 ES_UPPERCASE スタイルでは、すべての小文字が大文字に変換されます。

Unicode 文字セットと ANSI 文字セットの詳細については 「Unicode および文字セット」を参照してください。

ES_NUMBER スタイルでは、入力が編集コントロール内の数字のみに制限されます。

ES_READONLY スタイルは、編集コントロールを読み取り専用の状態に変更します。

ES_PASSWORD スタイルでは、1 行の編集コントロール内のすべての文字がアスタリスクとして表示されます。 アプリケーションは、このトピックで後述するように、 EM_SETPASSWORDCHAR メッセージを使用して、表示する別の文字を定義できます。

編集コントロールがバージョン 6 Comctl32.dllの場合、 ES_PASSWORD スタイルの既定の文字は黒い円になります。 以前のバージョンの共通コントロールの編集コントロールでは、既定の文字はアスタリスクです。

ES_OEMCONVERT スタイルでは、編集コントロールに入力されたテキストは、Windows 文字セットから OEM 文字セットに変換され、Windows 文字セットに戻されます。 これにより、アプリケーションが CharToOem 関数を呼び出して編集コントロール内の Windows 文字列を OEM 文字に変換するときに、適切な文字変換が保証されます。 ES_OEMCONVERT は、Unicode をサポートしていないファイル システムで使用されるファイル名を含む編集コントロールに最も役立ちます。

ダイアログ ボックス内の複数行編集コントロールの場合、 ES_WANTRETURN スタイルを使用すると、ユーザーがテキストの入力中に Enter キーを押すと、コントロールに復帰が挿入されます。 このスタイルを指定しない場合、Enter キーを押すと、ダイアログ ボックスの既定のプッシュ ボタンを押すのと同じ効果があります。 ES_WANTRETURN しない場合、ユーザーは Ctrl キーを押しながら Enter キーを押して復帰を挿入する必要があります。 ワードラップと改行の詳細については、「ワードラップと改行の処理」を参照してください。

ビジュアル スタイル

ES_NOHIDESEL スタイルでは、編集コントロールにフォーカスがない場合、選択したテキストが強調表示され続けます。 このスタイルがない場合、コントロールがフォーカスを失うと、選択したテキストは強調表示を失います。

既定では、編集コントロールには罫線はありません。 これを指定するには、アプリケーションで WS_BORDER ウィンドウ スタイルを使用できます。

編集コントロールで視覚スタイルを使用するためには、アプリケーションにマニフェストを含め、プログラムの開始時に InitCommonControls 関数を呼び出す必要があります。 視覚スタイルの詳細については、 視覚スタイルを参照してください。 マニフェストの詳細については、 視覚スタイルを有効にするを参照してください。

テキスト バッファー

システムは、編集コントロールのテキストをバッファーに格納し、必要に応じてコントロールにコピーします。

次のトピックでは、システムがバッファーを割り当てて初期化し、その特性を変更する方法について説明します。

テキスト バッファーの割り当て

システムが編集コントロールを作成すると、テキスト バッファーが自動的に作成され、初期サイズが設定され、必要に応じてサイズが大きくなります。 サイズは、1 行の編集コントロールに対して、約 32 KB (KB (キロバイト)) の定義済みの制限まで指定できます。 この制限は変更される可能性があるため、ソフト制限と呼ばれます。 アプリケーションは、 EM_SETLIMITTEXT メッセージを編集コントロールに送信することで、バッファー サイズにハード制限を設定できます。 バッファーがいずれかの制限を超えた場合、システムはアプリケーションに EN_ERRSPACE 通知コードを送信します。 アプリケーションは、 EM_GETLIMITTEXT メッセージを送信することで、現在のテキスト制限を取得できます。

通常、システムは、アプリケーションのデータ セグメントの外部にあるメモリを使用して、ダイアログ ボックスに編集コントロール バッファーを作成します。 アプリケーションでは、編集コントロールを作成するときに、この既定の割り当て動作を抑制し、DS_LOCALEDIT スタイルを使用してローカル ヒープからバッファーを作成できます (「ダイアログ ボックスについて」の「ダイアログ ボックス テンプレート スタイル」を参照)。 DS_LOCALEDIT スタイルを使用するアプリケーションは、すべてのバッファー割り当てを担当します。 初期割り当てを行うために、アプリケーションは LocalAlloc 関数を呼び出し、返されたバッファー ハンドルを編集コントロールに渡すには、 EM_SETHANDLE メッセージを送信します。 (たとえば、 EN_ERRSPACE 通知コードに応答して) 後続の割り当てを行うには、アプリケーションは現在のバッファーコンテンツを保存し (必要な場合)、次のように新しいバッファーを取得する必要があります。

現在のバッファーを保存し、新しいバッファーを取得するには、次の手順に従います。

  1. コントロールに EM_GETHANDLE メッセージを送信して、複数行編集コントロールのテキストに現在割り当てられているメモリのハンドルを取得します。
  2. LocalFree 関数を呼び出してバッファーを解放します。
  3. LocalAlloc を呼び出して、新しいバッファー (およびバッファー ハンドル) を取得します。
  4. コントロールに EM_SETHANDLE メッセージを送信して、バッファー ハンドルをシステムに渡します。

EM_SETHANDLE メッセージと EM_GETHANDLE メッセージは、複数行の編集コントロールにのみ適用されます。

既定の割り当て動作を使用するアプリケーション (つまり、[ダイアログ ボックスについて] の [ダイアログ ボックス テンプレート のスタイル] を参照) DS_LOCALEDITスタイルを使用しないアプリケーションは、 EM_SETHANDLE および EM_GETHANDLE メッセージを編集コントロールに送信できません。

EM_SETHANDLE メッセージを送信すると、元に戻すフラグがクリアされ (EM_CANUNDO メッセージが 0 を返す)、変更フラグがクリアされ (EM_GETMODIFY メッセージから 0 が返されます)、編集コントロール ウィンドウが再描画されます。

テキスト バッファーの初期化

アプリケーションは、 SetDlgItemText 関数を呼び出すことによって、編集コントロールのテキスト バッファーを初期化または再初期化できます。 アプリケーションは、 GetDlgItemText 関数を呼び出すことによって、テキスト バッファーの内容を取得できます。

テキスト バッファーを読み取り専用にする

各編集コントロールについて、システムメインコントロールのテキストが読み取り/書き込み (既定) か読み取り専用かを示す読み取り専用フラグが含まれます。 アプリケーションは、コントロールに EM_SETREADONLY メッセージを送信することで、テキストの読み取り/書き込みフラグまたは読み取り専用フラグを設定できます。 編集コントロールが読み取り専用かどうかを判断するために、アプリケーションは GWL_STYLE 定数を使用して GetWindowLong 関数を呼び出すことができます。 EM_SETREADONLY メッセージは、単一行編集コントロールと複数行編集コントロールの両方に適用されます。

四角形の書式設定を変更する

編集コントロールのテキストの表示は、ウィンドウの四角形の寸法とその書式設定の四角形によって制御されます。 ウィンドウの四角形は、編集コントロールを含むウィンドウのクライアント領域です。 書式設定四角形は、ウィンドウの四角形メイン表示されるテキストを書式設定するためにシステムによって格納されるコンストラクトです。 編集コントロールが最初に表示されるとき、2 つの四角形は画面上で同じです。 アプリケーションでは、書式設定の四角形をウィンドウの四角形よりも大きくしたり (編集コントロールのテキストの表示を制限したり)、ウィンドウの四角形よりも小さくしたりできます (これにより、テキストの周囲に余分な空白が作成されます)。

アプリケーションは、 EM_SETRECT メッセージを送信することで、編集コントロールの書式設定の四角形の座標を設定できます。 EM_SETRECT メッセージでは、編集コントロールのテキストも自動的に再描画されます。 コントロールのテキストを再描画せずに書式設定する四角形の座標を確立するために、アプリケーションはコントロールに EM_SETRECTNP メッセージを送信できます。 書式設定する四角形の座標を取得するために、アプリケーションはコントロールに EM_GETRECT メッセージを送信できます。 これらのメッセージは、複数行編集コントロールにのみ適用されます。

コントロール通知メッセージの編集

ユーザーは、キーボードとマウスを使用して編集要求を行います。 システムは、 WM_COMMAND メッセージの形式で編集コントロールの親ウィンドウに各要求を送信します。 メッセージには、 wParam パラメーターの下位ワードの編集コントロール識別子、 lParam パラメーター内の編集コントロールのハンドル、および wParam パラメーターの上位ワードでのユーザーのアクションに対応する編集コントロール通知コードが含まれます。

アプリケーションでは、各通知メッセージに付随する通知コードを調べて、適切に応答する必要があります。 次の表に、各編集コントロール通知コードと、それを生成するアクションを示します。

通知コード ユーザー アクション
EN_CHANGE ユーザーが編集コントロールのテキストを変更しました。 システムは、(EN_UPDATEとは異なり ) この通知コードを送信する前にディスプレイを更新します。
EN_ERRSPACE 編集コントロールが、特定の要求を満たすのに十分なメモリを割り当てられない場合に送信されます。
EN_HSCROLL ユーザーが編集 コントロールの水平スクロール バーをクリックしました。 画面を更新する前に、この通知コードが送信されます。
EN_KILLFOCUS ユーザーが別のコントロールを選択しました。
EN_MAXTEXT テキスト挿入中に、ユーザーが編集コントロールに指定されている文字数を超えたときに送信されます。 挿入が切り捨てられました。 この通知コードは、編集コントロールに ES_AUTOHSCROLL スタイルが設定されておらず、挿入する文字数が編集コントロールの幅を超えている場合、または編集コントロールに ES_AUTOVSCROLL スタイルが設定されておらず、挿入される行の合計数が編集コントロールの高さを超えている場合にも送信されます。
EN_SETFOCUS ユーザーがこの編集コントロールを選択しました。
EN_UPDATE ユーザーが編集コントロールのテキストを変更し、システムが新しいテキストを表示しようとしている。 システムは、テキストを書式設定した後、表示する前にこの通知コードを送信し、アプリケーションが編集コントロール ウィンドウのサイズを変更できるようにします。
EN_VSCROLL ユーザーが編集 コントロールの垂直スクロール バーをクリックしたか、編集 コントロール上でマウス ホイールをスクロールしました。 画面を更新する前に、この通知コードが送信されます。
EN_SEARCHWEB ユーザーが [Web の検索] コンテキスト メニュー エントリをクリックしました。 システムは、ブラウザーを起動した後にこの通知を送信します。

さらに、編集コントロールが描画される前に、システムは編集コントロールの親ウィンドウに WM_CTLCOLOREDIT メッセージを送信します。 このメッセージには、編集コントロールの表示コンテキスト (DC) のハンドルと子ウィンドウのハンドルが含まれています。 親ウィンドウでは、これらのハンドルを使用して、編集コントロールのテキストと背景色を変更できます。

編集コントロール既定メッセージ処理

編集コントロール プロシージャが処理しないすべてのメッセージについては、定義済みの編集コントロール ウィンドウ クラスのウィンドウ プロシージャが既定の処理を実行します。 編集コントロール プロシージャがメッセージに対して FALSE を返すと、定義済みのウィンドウ プロシージャはメッセージをチェックし、次の既定のアクションを実行します。

メッセージ 既定の動作
EM_CANUNDO コントロールの 編集操作を元に戻すことができる場合は TRUE を 返します。
EM_CHARFROMPOS 指定されたポイントに最も近い文字の文字インデックスと行インデックスを返します。
EM_EMPTYUNDOBUFFER 元に戻すバッファーを空にし、 EM_CANUNDO メッセージによって取得された元に戻すフラグを FALSE に設定します。 編集コントロールが EM_SETTEXT メッセージまたは WM_SETHANDLE メッセージを受信すると常に、元に戻すフラグはシステムによって自動的にクリアされます。
EM_FMTLINES 複数行編集コントロールの折り返された行の末尾に、論理的な改行文字 (2 つの復帰文字と改行) を追加または削除します。 単一行の編集コントロールでは処理されません。
EM_GETFIRSTVISIBLELINE 単一行編集コントロールの最初に表示される文字の 0 から始まるインデックス、または複数行編集コントロールの最上部の表示行の 0 から始まるインデックスを返します。
EM_GETHANDLE 複数行編集コントロールのテキストを含むバッファーを識別するハンドルを返します。 単一行の編集コントロールでは処理されません。
EM_GETLIMITTEXT 現在のテキスト制限を文字で返します。
EM_GETLINE 単一行編集コントロールの文字をバッファーにコピーし、コピーした文字数を返します。 複数行の編集コントロールで、コントロールからテキスト行を取得し、コピーした文字数を返します。
EM_GETLINECOUNT 編集コントロール内の行数を返します。
EM_GETMARGINS 左右の余白の幅を返します。
EM_GETMODIFY 編集コントロールの内容が変更されたかどうかを示すフラグを返します。
EM_GETPASSWORDCHAR 編集コントロールが ES_PASSWORD スタイルと組み合わせて使用する文字を返します。
EM_GETRECT 編集コントロール内の書式設定する四角形の座標を返します。
EM_GETSEL エディット コントロール内の現在の選択範囲の先頭と最後の文字の位置を返します。
EM_GETTHUMB 複数行編集コントロールの垂直スクロール バーでの、スクロール ボックスの位置を返します。
EM_GETWORDBREAKPROC 編集コントロールの現在のワードラップ関数のアドレスを返します。
EM_LINEFROMCHAR 指定した文字インデックスを含む複数行編集コントロールの行の 0 から始まる番号を返します。 このメッセージは、 EM_LINEINDEX メッセージの逆です。 単一行の編集コントロールでは処理されません。
EM_LINEINDEX 複数行の編集コントロール内の行の文字を返します。 このメッセージは、 EM_LINEFROMCHAR メッセージの逆です。 単一行の編集コントロールでは処理されません。
EM_LINELENGTH 1 行の編集コントロールの長さを文字数で返します。 複数行の編集コントロールで、指定した行の長さを文字数で返します。
EM_LINESCROLL 1 行の編集コントロールでテキストを垂直方向にスクロールするか、複数行の編集コントロールで水平方向にスクロールします (コントロールに ES_LEFT スタイルがある場合)。 lParam パラメーターは、現在の行から垂直方向にスクロールする行数を指定します。 wParam パラメーターは、現在の文字から開始して、水平方向にスクロールする文字数を指定します。
EM_POSFROMCHAR 指定した文字のクライアント座標を返します。
EM_REPLACESEL 現在の選択範囲を、アプリケーションが指定したバッファー内のテキストに置き換え、親ウィンドウ EN_UPDATEEN_CHANGE 通知コードを送信し、元に戻すバッファーを更新します。
EM_SCROLL 複数行編集コントロールでテキストを垂直方向にスクロールします。 このメッセージは、WM_VSCROLL メッセージを編集コントロールに送信することと同じです。 単一行の編集コントロールでは処理されません。
EM_SCROLLCARET 編集コントロール内でキャレットが表示されるまでスクロールします。
EM_SETFONT サポートされていません。
EM_SETHANDLE テキスト バッファーとして使用されるメモリにハンドルを設定し、元に戻すバッファーを空にし、スクロール位置を 0 にリセットして、ウィンドウを再描画します。
EM_SETLIMITTEXT ユーザーが編集コントロールに入力する最大文字数を設定します。 1 行の編集コントロールの場合、この値は 0x7FFFFFFE または wParam パラメーターの値のいずれか小さい方になります。 複数行編集コントロールの場合、この値は 1 または wParam パラメーターの値のいずれか小さい方です。
EM_SETMARGINS 左右の余白の幅を設定し、新しい余白を反映するように編集コントロールを再描画します。
EM_SETMODIFY 編集コントロールが変更されたかどうかを示す変更フラグを設定またはクリアします。
EM_SETPASSWORDCHAR 編集コントロールが ES_PASSWORD スタイルと組み合わせて使用する文字を定義します。
EM_SETREADONLY 編集コントロールでの読み取り専用スタイル (ES_READONLY) を設定または削除します。
EM_SETRECT 複数行編集コントロールの書式設定四角形を設定し、ウィンドウを再描画します。 単一行の編集コントロールでは処理されません。
EM_SETRECTNP 複数行編集コントロールの書式設定四角形を設定しますが、ウィンドウは再描画しません。 単一行の編集コントロールでは処理されません。
EM_SETSEL 選択する開始位置と終了位置を設定して、編集コントロール内の文字範囲を選択します。
EM_SETTABSTOPS 複数行編集コントロールのタブ位置を設定します。 単一行の編集コントロールでは処理されません。
EM_SETWORDBREAKPROC 編集コントロールの既定の折り返し関数を、アプリケーションが定義した折り返し関数で置換します。
EM_UNDO 挿入したテキストを削除するか、削除した文字を挿入し、選択範囲を挿入されたテキストに設定します。 必要に応じて、 EN_UPDATEEN_CHANGE 通知コードを親ウィンドウに送信します。
WM_CHAR 1 行の編集コントロールに文字を書き込み、 EN_UPDATEEN_CHANGE 通知コードを親ウィンドウに送信します。 複数行の編集コントロールに文字を書き込みます。 コピー用の Ctrl + C キーや貼り付け用の Ctrl + V キーなど、標準関数のアクセラレータ キーを処理します。 複数行の編集コントロールでは、Tab キーと Ctrl キーを押しながら Tab キーを押して、ダイアログ ボックス内のコントロール間を移動したり、複数行の編集コントロールにタブを挿入したりすることもできます。 無効な文字に MessageBeep 関数を使用します。
WM_CLEAR 編集コントロール内の現在の選択範囲 (ある場合) をクリアします。 現在選択されていない場合は、キャレットの右側にある文字を削除します。 ユーザーが Shift キーを押すと、選択範囲がクリップボードに切り取られます。選択されていない場合はキャレットの左側の文字が削除されます。 ユーザーが Ctrl キーを押すと、選択範囲が削除されるか、選択範囲がない場合は行の末尾まで削除されます。
WM_COPY スタイルが ES_PASSWORDでない限り、テキストをクリップボードにコピーします。この場合、メッセージは 0 を返します。
WM_CREATE 編集コントロールを作成し、成功した場合は TRUE、失敗の場合は 1 を親ウィンドウに通知します。
WM_CUT 選択範囲をクリップボードに切り取るか、選択範囲がない場合はカーソルの左側の文字を削除します。
WM_ENABLE 単一行編集コントロールの四角形を灰色で再描画します。 単一行および複数行の編集コントロールの有効な状態を返します。
WM_ERASEBKGND 複数行の編集コントロール ウィンドウに、編集コントロールの現在の色を塗りつぶします。
WM_GETDLGCODE DLGC_WANTCHARS、DLGC_HASStandard Edition T、Standard Edition L、およびDLGC_WANTARROWSの値を返します。 複数行の編集コントロールでは、DLGC_WANTALLKEYSも返されます。 ユーザーが Alt キーを押しながら BACKSPACE キーを押すと、DLGC_WANTMESSAGEも返されます。
WM_GETFONT コントロールで使用されているフォントのハンドルを返します 。コントロールがシステム フォントを使用している場合は NULL を返します。
WM_GETTEXT 指定した文字数をバッファーにコピーし、コピーした文字数を返します。
WM_GETTEXTLENGTH 編集コントロール内のテキストの長さを文字数で返します。 長さには、終端の NULL 文字は含まれません。
WM_HSCROLL 複数行編集コントロールのテキストを水平方向にスクロールし、スクロール ボックスの移動を処理します。
WM_KEYDOWN 仮想キー コードの標準処理を実行します。
WM_KILLFOCUS 編集コントロール ウィンドウのキーボード フォーカスを削除し、キャレットを破棄し、現在の選択を非表示にして、編集コントロールがフォーカスを失っていることを親ウィンドウに通知します。
WM_LBUTTONDBLCLK 現在の選択範囲をクリアし、カーソルの下の単語を選択します。 Shift キーが押されている場合は、カーソルの下の単語まで選択範囲を拡張します。
WM_LBUTTONDOWN 現在のカーソル位置を変更します。 Shift キーが押されている場合は、カーソルの位置まで選択範囲を拡張します。 複数行の編集コントロールでは、ユーザーが複数行の編集コントロール ウィンドウの外側でマウス ボタンを押しながら自動的にスクロールするようにタイマーを設定します。
WM_LBUTTONUP マウス キャプチャを解放し、単一行編集コントロールのテキスト挿入ポイントを設定します。 複数行の編集コントロールでは、 WM_LBUTTONDOWN メッセージのタイマー セットも終了します。
WM_MOUSEMOVE マウス ボタンが下にある場合は、単一行編集コントロールの現在の選択範囲を変更します。 複数行の編集コントロールでは、ユーザーが複数行の編集コントロール ウィンドウの外側でマウス ボタンを押すと、自動的にスクロールするようにタイマーを設定します。
WM_NCCREATE ウィンドウの CREATESTRUCT 構造体へのポインター。 このメッセージは、ウィンドウが最初に作成されたときに WM_CREATE メッセージに 送信されます。
WM_NCDESTROY テキスト バッファー、元に戻すバッファー、タブストップ バッファー、強調表示ブラシなど、編集コントロール ウィンドウに関連付けられているすべてのメモリを解放します。
WM_PAINT 背景を消去し、編集コントロール ウィンドウの現在の色でウィンドウを塗りつぶし、罫線 (ある場合) を描画し、フォントを設定してテキストを描画し、テキスト挿入キャレットを表示します。
WM_PASTE クリップボードのテキストをキャレット位置の編集コントロール ウィンドウに貼り付けます。
WM_SETFOCUS 編集コントロール ウィンドウのキーボード フォーカスを設定します (現在の選択範囲が非表示の場合は表示され、キャレットが作成されます)。
WM_SETFONT フォントを設定し、必要に応じて編集コントロールを再描画します。
WM_SETTEXT テキストを単一行編集コントロールにコピーし、メモリが不足している場合に親ウィンドウに通知し、アンドゥ バッファを空にして、 EN_UPDATE および EN_CHANGE 通知コードを親ウィンドウに送信します。 複数行の編集コントロールでは、(必要に応じて) 行を再ラップし、スクロール位置を設定します。
WM_SIZE 編集コントロール ウィンドウのサイズを設定し、文字の高さと幅に合わせてサイズを設定します。
WM_SYSCHAR ユーザーが Alt キーを押しながら BACKSPACE キーを押した場合は TRUE を返します。それ以外の場合はアクションを実行しません。
WM_SYSKEYDOWN ユーザーが Alt キーを押しながら BACKSPACE キーを押すと、最後の操作を元に戻します。それ以外の場合、アクションは実行されません。
WM_TIMER ユーザーが複数行の編集コントロール ウィンドウの外側にあるマウス ボタンを押したままにした場合は、編集コントロール ウィンドウのテキストをスクロールします。
WM_UNDO 挿入したテキストを削除するか、削除した文字を挿入し、選択範囲を挿入されたテキストに設定します。 必要に応じて、 EN_UPDATEEN_CHANGE 通知コードを親ウィンドウに送信します。
WM_VSCROLL 複数行編集コントロールを垂直方向にスクロールし、スクロール ボックスの移動を処理します。 単一行の編集コントロールでは処理されません。

定義済みウィンドウ プロシージャは、既定の処理を行えるように、その他のすべてのメッセージを DefWindowProc 関数に渡します。