次の方法で共有


ボタンの状態

このセクションでは、ボタンを選択すると、その状態がどのように変わるか、およびアプリケーションが応答する方法について説明します。

このセクションは、次のトピックで構成されています。

ボタンの選択

ユーザーは、3 つの方法でボタンを選択できます。マウスでボタンをクリックし、それにタブ移動して Enter キーを押すか、(ボタンが WS_GROUP スタイルで定義されているグループの一部である場合)、グループ内で選択したボタンにタブ移動し、方向キーを使用してそのグループ内を移動します。 2 つのタブ付け方法は、システムによって提供される定義済みのキーボード インターフェイスの一部です。 このインターフェイスの詳細については、「ダイアログ ボックスの」を参照してください。

通常、ボタンを選択すると、次のイベントが発生します。

  • システムは、ボタンにキーボード フォーカスを与えます。
  • ボタンは、選択内容を通知するメッセージを親ウィンドウに送信します。
  • 親ウィンドウ (またはシステム) は、ボタンの状態を変更するためのメッセージを送信します。
  • 親ウィンドウ (またはシステム) は、新しい状態を反映するようにボタンを再描画します。

ボタン状態の要素

ボタンの状態は、フォーカス状態、プッシュ状態、およびチェック状態によって特徴付けることができます。

フォーカスの状態

フォーカスの状態は、チェック ボックス、ラジオ ボタン、プッシュ ボタン、または所有者が描画したボタンに適用されます。 ボタンは、ユーザーがキーボード フォーカスを選択したときに受け取り、ユーザーが別のコントロールを選択するとフォーカスを失います。 一度にキーボード フォーカスを設定できるコントロールは 1 つだけです。

ボタンにキーボード フォーカスがある場合、システムは通常、ボタンを点線で囲むことで、ボタンのテキスト、アイコン、またはビットマップを強調表示します。 さらに、フォーカスがある場合、プッシュ ボタンには濃い境界線が付きます。 システムは自動ボタンの強調表示を自動的に変更しますが、アプリケーションはメッセージを送信して自動以外のボタンの強調表示を変更する必要があります。

プッシュ状態

プッシュ状態は、プッシュ ボタン、チェック ボックス、ラジオ ボタン、または 3 状態のチェック ボックスには適用されますが、他のボタンには適用されません。 ボタンのプッシュ状態は、プッシュすることもプッシュしない場合もあります。 プッシュ ボタン (または BS_PUSHLIKE スタイルの任意のボタン) を押すと、ボタンは沈んだボタンとして描画されます。 プッシュされない場合は、上げボタンとして描画されます。 チェック ボックス、ラジオ ボタン、または 3 状態チェック ボックスをクリックすると、ボタンの背景が灰色で表示されます。 ボタンが押されていない場合、ボタンの背景は灰色で表示されません。

状態の確認

チェック状態は、チェック ボックス、ラジオ ボタン、または 3 状態チェック ボックスには適用されますが、他のボタンには適用されません。 状態は、確認、クリア、または (3 つの状態のチェック ボックスの場合) 不確定にすることができます。 チェック ボックスは、チェック マークが含まれている場合はオンになり、含まれていない場合はオフになります。 ラジオ ボタンは、黒い点が含まれている場合にチェックされます。ない場合はクリアされます。 3 つの状態のチェック ボックスは、チェック マークが含まれている場合はチェック ボックスがオンになり、含まれていない場合はクリアされ、灰色のボックスが含まれている場合は不確定になります。 システムは自動ボタンのチェック状態を自動的に変更しますが、アプリケーションは自動ではないボタンのチェック状態を変更する必要があります。

ボタンの状態に対する変更

ユーザーがボタンを選択するときは、通常、ボタンの状態要素を 1 つ以上変更する必要があります。 システムは、すべてのボタンの種類のフォーカス状態、BS_PUSHLIKE スタイルのプッシュ ボタンまたはボタンのプッシュ状態、およびすべての自動ボタンのチェック状態を自動的に変更します。 アプリケーションでは、ボタンの種類、スタイル、および現在の状態を考慮して、他のすべての状態変更を行う必要があります。 次の一覧は、ボタンの種類ごとに変更する必要がある状態要素を示しています。

  • チェック ボックスでチェック状態を変更する必要があります。
  • ラジオ ボタンは、チェックの状態を変更する必要があります。 また、同じグループ内の他のラジオ ボタンのチェック状態を変更して、ラジオ ボタンの相互排他的な性質を確保する必要がある場合もあります。
  • 所有者が描画したボタンの状態はアプリケーションによって異なるため、ボタンでアプリケーションを変更する必要がある内容は異なる場合があります。 ユーザーはグループ ボックスを選択できないため、グループ ボックスの要素を変更する必要はありません。

アプリケーションは、BM_GETCHECK または BM_GETSTATE メッセージを送信することで、ボタンの状態を判断できます。アプリケーションは、ボタンの状態を BM_SETCHECK または BM_SETSTATE メッセージで送信することで設定できます。