コマンドの振り分け (ルーティング)

コマンドを使用する必要は、タスクが [プロパティ] ウィンドウを使用してハンドラー関数に制限されますがコマンド間のメッセージマップの接続。また、ほとんどのコマンド ハンドラーを作成します。

ウィンドウ メッセージは、通常、メイン フレーム ウィンドウに送信されますが、コマンド メッセージは、他のオブジェクトにルーティングされます。フレームワークはコマンドターゲットのオブジェクトの標準シーケンス、そのうちの一つに、コマンドのコマンドのハンドラーがあると想定されますパスを指定します。各コマンドターゲットのオブジェクトは受信メッセージを処理できるかどうかを確認するメッセージ マップを確認します。

異なるコマンドターゲットのクラスは異なる時刻に独自のメッセージ マップをチェックします。通常、クラスは、特定の他のオブジェクトにコマンドのコマンドでは、最初の機能を提供するパスを指定します。これらのオブジェクトはいずれもコマンドを処理しない場合は、元のクラスは、独自のメッセージ マップをチェックします。次に、自体ハンドラーを指定できない場合は、コマンドには、さらにコマンドのターゲット パスを指定することがあります。各クラスがこの処理をどのように構成する方法を次の表 標準のコマンド ルーティング 。コマンドのターゲットがコマンドのパスを指定する一般守実行は次のとおりです:

  1. 現在アクティブな子コマンドターゲットのオブジェクトに。

  2. 自身に。

  3. 他のコマンド ターゲットで。

このルーティング機能がどのように高くなりますか。ハンドラーがコマンドに応答して実行することをと比較して、ルーティングのコストが高くありません。ユーザーがユーザーインターフェイス オブジェクトと対話している場合にのみ、フレームワークはコマンドを生成することを忘れないでままにします。

標準のコマンド ルーティング

この型のオブジェクトがコマンドを受信したとき。..

それ自身ができ、それ以外のコマンドターゲットがこの順序でコマンドを処理する場合に作成します:

MDI フレーム ウィンドウ (CMDIFrameWnd

  1. アクティブな CMDIChildWnd

  2. このフレーム ウィンドウ

  3. アプリケーション (CWinApp のオブジェクト)

ドキュメント フレーム ウィンドウ (CFrameWndCMDIChildWnd

  1. アクティブなビュー

  2. このフレーム ウィンドウ

  3. アプリケーション (CWinApp のオブジェクト)

ビュー

  1. このビュー

  2. ビューに接続されているドキュメント

Document

  1. このドキュメント

  2. 文書に添付するドキュメント テンプレート

ダイアログ ボックス

  1. このダイアログ ボックス

  2. ダイアログ ボックスを所有するウィンドウ

  3. アプリケーション (CWinApp のオブジェクト)

上の表の記述の第 2 列、および数が他のオブジェクト、ドキュメントなど、最初の列の対応する項目を表示します。たとえば、順方向のドキュメント ビューへのコマンド 2 番目の列を読み取ると、さらにルーティングに従うに最初の列の 「docs」 " を参照してください。

参照

概念

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