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