コントロール スタイルの編集

CreateWindow 関数または CreateWindowEx 関数を使用して編集コントロールを作成するには、EDIT クラス、適切なウィンドウ スタイル定数、および次の編集コントロール スタイルの組み合わせを指定します。 コントロールが作成された後、これらのスタイルは変更できません(ただし、特に明記されている場合を除く)。

LRESULT MsgCreate(HWND hwnd, UINT uMessage, WPARAM wparam, LPARAM lparam)
{
    lparam;
    wparam;
    uMessage;

    // Create Edit control for typing to be sent to server
    if (NULL == (hOutWnd = CreateWindow("EDIT",
                           NULL,
                           WS_BORDER | WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_LEFT | 
                           ES_MULTILINE | ES_AUTOVSCROLL,
                           0,0,0,0,
                           hwnd,
                           (HMENU) ID_OUTBOX,
                           (HINSTANCE) GetWindowLongPtr(hwnd, GWLP_HINSTANCE),
                           NULL)))
        return FALSE;
    return TRUE;
}

GitHub 上の Windows クラシック サンプルからの例。

定数

定数 説明
ES_AUTOHSCROLL
ユーザーが行の末尾に文字を入力すると、テキストを 10 文字だけ右に自動的にスクロールします。 ユーザーが Enter キーを押すと、コントロールはすべてのテキストを 0 の位置までスクロールします。
ES_AUTOVSCROLL
ユーザーが最後の行で Enter キーを押すと、テキストが 1 ページ上に自動的にスクロールされます。
ES_CENTER
1 行または複数行の編集コントロールのテキストを中央揃えします。
ES_LEFT
テキストを左余白に合わせます。
ES_LOWERCASE
編集コントロールに入力されたすべての文字を小文字に変換します。
コントロールの作成後にこのスタイルを変更するには、 SetWindowLong を使用します。
ES_MULTILINE
複数行の編集コントロールを指定します。 既定値は 1 行の編集コントロールです。
複数行の編集コントロールがダイアログ ボックス内にある場合、Enter キーを押したときの既定の応答は、既定のボタンをアクティブにすることです。 復帰として ENTER キーを使用するには、 ES_WANTRETURN スタイルを使用します。
複数行の編集コントロールがダイアログ ボックスに表示されず、 ES_AUTOVSCROLL スタイルが指定されている場合、ユーザーが Enter キーを押すと、エディット コントロールにはできるだけ多くの行が表示され、垂直にスクロールされます。 ES_AUTOVSCROLLを指定しない場合、編集コントロールにはできるだけ多くの行が表示され、ユーザーが Enter キーを押すと、行を表示できないときにビープ音が鳴ります。
ES_AUTOHSCROLLスタイルを指定すると、キャレットがコントロールの右端を越えると、複数行の編集コントロールが自動的に水平にスクロールされます。 新しい行を開始するには、ユーザーが Enter キーを押す必要があります。 ES_AUTOHSCROLLを指定しない場合、コントロールは必要に応じて自動的に単語を次の行の先頭に折り返します。 ユーザーが Enter キーを押すと、新しい行も開始されます。 ウィンドウ サイズによって、ワードラップの位置が決まります。 ウィンドウ サイズが変更されると、ワードラップの位置が変わり、テキストが再表示されます。
複数行の編集コントロールにはスクロール バーを含めることができます。 スクロール バーを含む編集コントロールは、独自のスクロール バー メッセージを処理します。 前の段落で説明したようにスクロール バーのないコントロールを編集し、親ウィンドウから送信されたすべてのスクロール メッセージを処理します。
ES_NOHIDESEL
編集コントロールの既定の動作を否定します。 既定の動作では、コントロールが入力フォーカスを失ったときに選択範囲が非表示になり、コントロールが入力フォーカスを受け取ったときに選択範囲が反転します。 ES_NOHIDESELを指定した場合、コントロールにフォーカスがない場合でも、選択したテキストは反転されます。
ES_NUMBER
編集コントロールに入力できるのは数字のみです。 このセットを使用しても、編集コントロールに数字以外を貼り付けることは可能であることに注意してください。
コントロールの作成後にこのスタイルを変更するには、 SetWindowLong を使用します。
編集コントロールに入力されたテキストを整数値に変換するには、 GetDlgItemInt 関数を使用します。 エディット コントロールのテキストを指定した整数の文字列形式に設定するには、 SetDlgItemInt 関数を使用します。
ES_OEMCONVERT
編集コントロールに入力されたテキストを変換します。 テキストは、Windows 文字セットから OEM 文字セットに変換され、Windows 文字セットに戻されます。 これにより、アプリケーションが CharToOem 関数を呼び出して編集コントロール内の Windows 文字列を OEM 文字に変換するときに、適切な文字変換が保証されます。 このスタイルは、Unicode をサポートしていないファイル システムで使用されるファイル名を含む編集コントロールに最も役立ちます。
コントロールの作成後にこのスタイルを変更するには、 SetWindowLong を使用します。
ES_PASSWORD
編集コントロールに入力された文字ごとにアスタリスク (*) を表示します。 このスタイルは、1 行の編集コントロールに対してのみ有効です。
表示される文字を変更したり、このスタイルを設定またはクリアしたりするには、 EM_SETPASSWORDCHAR メッセージを使用します。
メモ: バージョン 6 Comctl32.dll 使用するには、マニフェストで指定します。 マニフェストの詳細については、「 ビジュアル スタイルの有効化」を参照してください。
ES_READONLY
ユーザーが編集コントロールにテキストを入力または編集できないようにします。
コントロールの作成後にこのスタイルを変更するには、 EM_SETREADONLY メッセージを使用します。
ES_RIGHT
1 行または複数行の編集コントロール内のテキストを右揃えにします。
ES_UPPERCASE
編集コントロールに入力されたすべての文字を大文字に変換します。
コントロールの作成後にこのスタイルを変更するには、 SetWindowLong を使用します。
ES_WANTRETURN
ユーザーが Enter キーを押しながらダイアログ ボックスの複数行編集コントロールにテキストを入力するときに、復帰を挿入することを指定します。 このスタイルを指定しない場合、Enter キーを押すと、ダイアログ ボックスの既定のプッシュ ボタンを押すのと同じ効果があります。 このスタイルは、1 行の編集コントロールには影響しません。
コントロールの作成後にこのスタイルを変更するには、 SetWindowLong を使用します。

要件

要件
ヘッダー
Winuser.h