このドキュメントでは、次のトピックについて説明します。
ダイアログ。
このイベントは、ダイアログが、アイドル処理中または明示的な UPDATE-COMMAND-STATUS アクションへの応答時に、1 つ以上のコマンド(シグナル、SAME-AS 属性が指定されていないメニュー項目かツールバー項目、またはステータスバーウィンドウ)を更新する(使用不可にする、チェック状態にするなど)必要が生じるたびに発生します。 SHARED 属性に TRUE が設定されているコマンドは、Command-Status イベントを受け取るダイアログに属しているとは限りません。この設定の場合、MDI フレームコマンドはアクティブな MDI 子ダイアログ(存在する場合)に自動転送されます。 これは、Command-Status イベントが最も有効である状況を示す最適な例です。この状況では、1 つの MDI 子ダイアログ(または全く異なる複数の MDI 子ダイアログでも同様)の複数インスタンスが、相互に干渉しないで同一のツールバーコントロールとステータスバーコントロールを共有できるからです。各 MDI 子がコマンドを直接更新しようとする場合がこれに該当します。
Command-Status イベントの使用目的は、プログラムの状態が変わるときに状態変数の更新だけを行うことと(コマンドそのものは更新しません)、Command-Status イベントハンドラ内で状態変数の現在値に従ってコマンドを一括更新することです。
注意:
Command-Status イベントハンドラは頻繁に呼び出されるため、できるだけ早く戻らなければなりません。 この理由から、このイベントでは、例えばデータベースへのアクセスは避ける必要があります。
特定のダイアログが提供しなければならないコマンドがない場合は、Command-Status イベントは発生しません。イベントコードが記述されており、このイベントが抑制されていない場合も同様です。 例えば、共有としてマークされたコマンドがない場合のアクティブな MDI の子がこれに該当します。
パフォーマンスの理由から、アプリケーションは、特定の Command-Status イベントを起動したコマンドを知ることができません。 その代わりにダイアログは、そのダイアログを現在の対象とする、デフォルト以外の状態を設定する必要のあるすべてのコマンドを更新します。 シグナル、メニュー項目およびツールバー項目に対するデフォルト状態は使用不可および未チェックであり、ステータスバーウィンドウに対するデフォルト状態は非表示です。 Command-Status イベント内でプログラムによって明確に使用可能または使用不可にされないコマンド(または明確に表示または非表示にされないステータスバーウィンドウ)は、システムによって自動的にデフォルト状態にリセットされます。 これにより、例えば、ある MDI 子ダイアログではそのダイアログが "認識できる" コマンドのステータスのみ設定し、他の子ダイアログのためだけのコマンドをシステムに暗黙でリセットさせることができます。 このように、特定の MDI 子ダイアログだけのためにコマンドを導入する場合は、他のすべての MDI 子ダイアログの Command-Status イベントを修正する必要はありません。 対応するダイアログの Command-Status イベントが抑制されている場合は、コマンドの自動リセットは実行されません。
特定のダイアログの IDLE イベントがある場合、そのダイアログの Command-Status イベントは IDLE イベントの前に発生します。これにより、IDLE イベントコードの効果がコマンドステータス更新処理で考慮されます。