ボタンの種類

ボタンには複数の種類があり、また、同じ種類のボタンを区別するために 1 つ以上のボタン スタイルがあります。

このドキュメントでは、以下のトピックについて説明します。

ボタンの種類とスタイル

1 つのボタンは 1 つの種類に属しており、その外観と動作に影響を与える追加のスタイルが設定される場合があります。 ボタン スタイルの表については、「ボタン スタイル」を参照してください。

次のスクリーン ショットは、さまざまな種類のボタンを示しています。

screen shot of a dialog box that shows examples of eight types of buttons

このスクリーン ショットは、Windows Vista でボタンがどのように表示されるのかを示しています。 外観は、オペレーティング システムのバージョンによって異なり、また、ユーザーが設定したテーマに従います。

図に関して次の点に注意してください。

  • 3 状態チェック ボックスは不確定な状態で表示されています。 チェックされた状態またはチェックされていない状態では、通常のチェック ボックスのように見えます。
  • 大きいプッシュ ボタンは、プログラムによって (BM_SETSTATE メッセージを送信することにより) プッシュされた状態に設定済みであるため、クリックされていない場合でもその外観を維持します。
  • 表示されている視覚スタイルでは、既定のプッシュ ボタン (または入力フォーカスがある別のプッシュ ボタン) の背景に青色と灰色が交互に使用されます。

チェック ボックス

チェック ボックスは、正方形のボタンと、アプリケーションで定義されたラベル、アイコン、またはユーザーがボタンを選択することで選べる項目を示すビットマップで構成されます。 アプリケーションでは通常、相互に排他的ではない 1 つ以上のオプションをユーザーが選択できるようにするための、チェック ボックスが表示されます。

チェック ボックスには、標準、自動、3 状態、自動 3 状態の 4 つのスタイルのうちのいずれかを指定できます。これらのスタイルはそれぞれ、定数 BS_CHECKBOXBS_AUTOCHECKBOXBS_3STATEBS_AUTO3STATE で定義されます。 各スタイルでは、チェック (ボックス内にチェック マークがある状態) またはクリア (チェックマークがない状態) の 2 つのチェック状態が想定されます。 さらに、3 状態チェック ボックスでは、不確定な状態 (チェック ボックス内に網掛けされたボックスがある状態) が想定されます。これは、ユーザーが選択したのではないことを意味する可能性があります。 標準または自動のチェック ボックスを繰り返しクリックすると、チェックとクリアが切り替わります。 3 状態チェック ボックスを繰り返しクリックすると、チェック、クリア、不確定の順に切り替わり、それ以降も同じサイクルが繰り返されます。

ユーザーが (任意のスタイルの) チェック ボックスをクリックすると、そのチェック ボックスはキーボード フォーカスを取得します。 システムによって、チェック ボックスの親ウィンドウに、BN_CLICKED 通知コードを含む WM_COMMAND メッセージが送信されます。 自動チェック ボックスまたは自動 3 状態チェック ボックスからのメッセージである場合、これらのスタイルのチェック状態はシステムによって自動的に設定されるため、親ウィンドウはそのメッセージを処理する必要はありません。 ただし、自動ではないチェック ボックスまたは 3 状態チェック ボックスからのメッセージである場合は、それらのスタイルのチェック状態を設定する責任は親ウィンドウにあるため、親ウィンドウがこのメッセージを処理する必要があります。 チェック ボックスのスタイルに関係なく、状態が変更されると、チェック ボックスはシステムによって自動的に再描画されます。

アプリケーションでは、IsDlgButtonChecked 関数を使用してチェック ボックスの状態を確認できます。

グループ ボックス

グループ ボックスとは、チェック ボックスやラジオ ボタンなどのコントロールのセットを囲む長方形であり、アプリケーションで定義されたラベルが左上に表示されます。 グループ ボックスは、(通常はラベルで示される) 共通の目的に関連したコントロールを整理するためにのみ使用されます。 グループ ボックスにはスタイルは 1 つしかなく、定数 BS_GROUPBOX で定義されます。 グループ ボックスは選択できないため、チェック状態、フォーカス状態、プッシュ状態はありません。

プッシュ ボタン

プッシュ ボタンは四角形で、アプリケーションで定義されたテキスト ラベル、アイコン、またはユーザーがボタンを選択したときの動作を示すビットマップが含まれます。

プッシュ ボタンには、標準または既定の 2 つのスタイルがあり、定数 BS_PUSHBUTTONBS_DEFPUSHBUTTON で定義されます。 標準のプッシュ ボタンは通常、操作を開始するために使用されます。 ユーザーがボタンをクリックすると、そのボタンがキーボード フォーカスを取得します。 既定のプッシュ ボタンは通常、ダイアログ ボックスを閉じるなど、最も一般的な選択肢または既定の選択肢を示すために使用されます。 これは、ダイアログ ボックス内の他のプッシュ ボタンに入力フォーカスがない場合に、Enter キーを押すだけで選択できるボタンです。

ユーザーがプッシュ ボタンをクリックすると、そのボタンがキーボード フォーカスを取得します。 システムによって、ボタンの親ウィンドウに、BN_CLICKED 通知コードを含む WM_COMMAND メッセージが送信されます。

分割ボタンは、Windows Vista と バージョン 6.00 で導入された特殊な種類のプッシュ ボタンです。 分割ボタンは 2 つのパーツに分かれています。 メインのパーツは、通常のプッシュ ボタンや既定のプッシュ ボタンのように機能します。 2 つ目のパーツには、下向きの矢印があります。 通常は、この矢印をクリックするとメニューが表示されます。

分割ボタンには、BS_SPLITBUTTON スタイル、またはダイアログ ボックス内の既定のボタンである場合は BS_DEFSPLITBUTTON スタイルが設定されます。 ボタンの外観は、BCM_SETSPLITINFO メッセージまたは対応する Button_SetSplitInfo マクロを使用して変更できます。

ユーザーが分割ボタンのメイン パーツをクリックすると、通常のプッシュ ボタンと同様にBN_CLICKED 通知が送信されます。 ただし、ユーザーが下矢印をクリックすると、BCN_DROPDOWN 通知が送信されます。 BCN_DROPDOWN に応答してメニューを表示する責任は、アプリケーション側にあります。

Windows Vista およびバージョン 6.00 では、別の種類のプッシュ ボタンである コマンド リンクも導入されました。 視覚的には、コマンド リンクは通常のプッシュ ボタンとは大きく異なりますが、同じ機能を備えています。 コマンド リンクには通常、矢印アイコン、テキスト行、小さいフォントの追加テキストが表示されます。

ラジオ ボタン

ラジオ ボタン (オプション ボタンとも呼ばれます) は、丸いボタンと、アプリケーションで定義されたラベル、アイコン、またはユーザーがボタンを選択することで選べる項目を示すビットマップで構成されます。 アプリケーションでは通常、関連しているが相互に排他的なオプションのセットからユーザーが選択できるようにするために、グループ ボックス内でオプション ボタンを使用します。

ラジオ ボタンには、標準または自動の 2 つのスタイルがあり、スタイル定数 BS_RADIOBUTTONBS_AUTORADIOBUTTON で定義されます。 各スタイルでは、チェック (ボタン内にドットがある状態) またはクリア (ボタンにドットがない状態) の 2 つのチェック状態が想定されます。

ユーザーがいずれかの状態を選択すると、そのラジオ ボタンがキーボード フォーカスを取得します。 システムによって、ボタンの親ウィンドウに、BN_CLICKED 通知コードを含む WM_COMMAND メッセージが送信されます。 自動ラジオ ボタンからのメッセージである場合、そのスタイルのチェック状態はシステムによって自動的に設定されるため、親ウィンドウはそのメッセージを処理する必要はありません。 ただし、自動ではないラジオ ボタンからのメッセージである場合は、そのスタイルのチェック状態を設定する責任は親ウィンドウにあるため、親ウィンドウがメッセージを処理する必要があります。 ラジオ ボタンのスタイルに関係なく、状態が変わると、システムによって自動的にボタンが再描画されます。

ラジオ ボタンはグループとして整理され、グループ内では常に 1 つのボタンのみチェックされた状態にできます。 ラジオ ボタンに WS_GROUP フラグが設定されている場合、そのボタンがグループ内の 1 つ目のボタンになり、その直後にタブ オーダーで並ぶすべてのボタン (ただしそれらのボタン自体には WS_GROUP フラグが設定されていないもの) が、そのグループに属します。 どのラジオ ボタンにも WS_GROUP フラグが設定されていない場合は、ダイアログ ボックス内のすべてのラジオ ボタンが単一のグループとして扱われます。

アプリケーションでは、IsDlgButtonChecked 関数を使用して、ラジオ ボタンがチェックされた状態かどうかを確認できます。

リファレンス

ボタン スタイル

Conceptual

ボタンの使用