次の方法で共有


コマンド ルーティングの例

更新 : 2007 年 11 月

例として、MDI アプリケーションの [編集] メニューの [すべてクリア] から送られるコマンド メッセージについて説明します。このコマンドのハンドラ関数は、アプリケーションのドキュメント クラスのメンバ関数であるとします。この場合、ユーザーがメニュー項目を選択すると、コマンドは次の手順でハンドラに届きます。

  1. まず、メイン フレーム ウィンドウがコマンド メッセージを受け取ります。

  2. MDI メイン フレーム ウィンドウは、現在アクティブな MDI 子ウィンドウにコマンドの処理を任せます。

  3. MDI 子フレーム ウィンドウは、標準のルーティングにより、自分のメッセージ マップを調べる前に、ビューにコマンドの処理を任せます。

  4. ビューは、まず自分のメッセージ マップを調べます。ハンドラが見つからないときは、ビューに関連付けられたドキュメントにコマンドを送ります。

  5. ドキュメントは、メッセージ マップを調べ、ハンドラを見つけます。ドキュメントのメンバ関数が呼び出され、転送が終了します。

ドキュメントもハンドラを持っていないときは、コマンドはドキュメント テンプレートに送られます。その後、コマンドはビューに戻り、次にフレーム ウィンドウに戻ります。最後に、フレーム ウィンドウが自分のメッセージ マップをチェックします。ここにもハンドラがないときは、コマンドは MDI メイン フレーム ウィンドウへ戻され、次にアプリケーション オブジェクトに送られます。アプリケーション オブジェクトがコマンドの最後の送り先になります。

参照

概念

フレームワークがハンドラを呼び出す方法