メニュー、コントロール バー、およびアクセラレータの管理
更新 : 2007 年 11 月
フレーム ウィンドウは、メニュー、ツール バー ボタン、ステータス バー、アクセラレータなどのユーザー インターフェイス オブジェクトの更新を管理します。MDI アプリケーションでは、メニュー バーの共有も管理します。
メニューの管理
フレーム ウィンドウは、ON_UPDATE_COMMAND_UI の機構を使用して、ユーザー インターフェイス オブジェクトの更新処理を一部担当します。ON_UPDATE_COMMAND_UI の機構については、「ユーザー インターフェイス オブジェクトの更新方法」を参照してください。ツール バーなどのコントロール バー上のボタンは、アイドリング ループ中に更新されます。メニュー バーのドロップダウン メニューにあるメニュー項目は、メニューがドロップダウンされる直前に更新されます。
MDI アプリケーションでは、MDI フレーム ウィンドウがメニュー バーとキャプションを管理します。MDI フレーム ウィンドウには、既定のメニューが 1 つあります。このメニューは、アクティブな MDI 子ウィンドウがない場合、メニュー バーとして使用されます。MDI フレーム ウィンドウのメニュー バーは、アクティブな MDI 子ウィンドウがあると、そのウィンドウのメニューに置き換えられます。MDI アプリケーションが、複数のドキュメント タイプ (グラフとワークシート ドキュメントなど) をサポートするときは、それぞれの型に応じたメニューをメニュー バーに表示し、メイン フレーム ウィンドウのキャプションを変更します。
CMDIFrameWnd は、MDI アプリケーションで表示される [ウィンドウ] メニューの標準コマンドの既定処理を提供します。[新規ウィンドウ] コマンド (ID_WINDOW_NEW) の既定の処理では、現在のドキュメント上に新しいフォーム ウィンドウとビューが作成されます。機能を追加するには、この動作をオーバーライドします。
同じドキュメント タイプの複数の MDI 子ウィンドウは、同じメニュー リソースを共有します。同じドキュメント テンプレートで複数の MDI 子ウィンドウを作成すると、すべての子ウィンドウが同じメニュー リソースを使用できるので、Windows のシステム リソースを節約できます。
ステータス バーの管理
フレーム ウィンドウは、クライアント領域内にステータス バーを配置し、ステータス バーのインジケータを管理します。フレーム ウィンドウは、必要に応じてステータス バー上のメッセージ領域を消去および更新します。また、ユーザーがメニュー項目またはツール バー ボタンを選択したときに、プロンプト文字列を表示します。詳細については、「ステータス バーにコマンド情報を表示する方法」を参照してください。
アクセラレータの管理
各フレーム ウィンドウは、キーボード アクセラレータを自動的に変換するためにオプションのアクセラレータ テーブルを持っています。この機構を使うと、メニュー コマンドを呼び出すアクセラレータ キー (つまり、ショートカット キー) を簡単に定義できます。