コマンド ルーティングの図
例として、MDI アプリケーションの [編集] メニューの [すべてクリア] メニュー項目からのコマンド メッセージについて考えてみましょう。 このコマンドのハンドラー関数が、アプリケーションのドキュメント クラスのメンバー関数であるとします。 ユーザーがメニュー項目を選択した後、コマンドがハンドラーに到達する方法を次に示します。
メイン フレーム ウィンドウは、まずコマンド メッセージを受信します。
メイン MDI フレーム ウィンドウでは、現在アクティブな MDI 子ウィンドウにコマンドを処理する機会が与えられます。
MDI 子フレーム ウィンドウの標準のルーティングでは、独自のメッセージ マップを確認する前に、コマンドを使用してそのことを確認できます。
ビューは、まず独自のメッセージ マップを確認し、ハンドラーがないことを確認します。次に、関連付けられているドキュメントにコマンドをルーティングします。
ドキュメントはメッセージ マップを確認し、ハンドラーを見つけます。 このドキュメント メンバー関数が呼び出され、ルーティングが停止します。
ドキュメントにハンドラーがない場合は、次にドキュメント テンプレートにコマンドをルーティングします。 その後、コマンドはビューに戻り、フレーム ウィンドウに戻ります。 最後に、フレーム ウィンドウがメッセージ マップをチェックします。 このチェックが失敗した場合、コマンドはメインの MDI フレーム ウィンドウに送り返され、次にアプリケーション オブジェクト (未処理のコマンドの最終的な宛先) に転送されます。