コマンド ルーティングの例
更新 : 2007 年 11 月
例として、MDI アプリケーションの [編集] メニューの [すべてクリア] から送られるコマンド メッセージについて説明します。このコマンドのハンドラ関数は、アプリケーションのドキュメント クラスのメンバ関数であるとします。この場合、ユーザーがメニュー項目を選択すると、コマンドは次の手順でハンドラに届きます。
まず、メイン フレーム ウィンドウがコマンド メッセージを受け取ります。
MDI メイン フレーム ウィンドウは、現在アクティブな MDI 子ウィンドウにコマンドの処理を任せます。
MDI 子フレーム ウィンドウは、標準のルーティングにより、自分のメッセージ マップを調べる前に、ビューにコマンドの処理を任せます。
ビューは、まず自分のメッセージ マップを調べます。ハンドラが見つからないときは、ビューに関連付けられたドキュメントにコマンドを送ります。
ドキュメントは、メッセージ マップを調べ、ハンドラを見つけます。ドキュメントのメンバ関数が呼び出され、転送が終了します。
ドキュメントもハンドラを持っていないときは、コマンドはドキュメント テンプレートに送られます。その後、コマンドはビューに戻り、次にフレーム ウィンドウに戻ります。最後に、フレーム ウィンドウが自分のメッセージ マップをチェックします。ここにもハンドラがないときは、コマンドは MDI メイン フレーム ウィンドウへ戻され、次にアプリケーション オブジェクトに送られます。アプリケーション オブジェクトがコマンドの最後の送り先になります。