コマンドの振り分け (ルーティング)
コマンドを使用する必要は、タスクが [プロパティ] ウィンドウを使用してハンドラー関数に制限されますがコマンド間のメッセージマップの接続。また、ほとんどのコマンド ハンドラーを作成します。
ウィンドウ メッセージは、通常、メイン フレーム ウィンドウに送信されますが、コマンド メッセージは、他のオブジェクトにルーティングされます。フレームワークはコマンドターゲットのオブジェクトの標準シーケンス、そのうちの一つに、コマンドのコマンドのハンドラーがあると想定されますパスを指定します。各コマンドターゲットのオブジェクトは受信メッセージを処理できるかどうかを確認するメッセージ マップを確認します。
異なるコマンドターゲットのクラスは異なる時刻に独自のメッセージ マップをチェックします。通常、クラスは、特定の他のオブジェクトにコマンドのコマンドでは、最初の機能を提供するパスを指定します。これらのオブジェクトはいずれもコマンドを処理しない場合は、元のクラスは、独自のメッセージ マップをチェックします。次に、自体ハンドラーを指定できない場合は、コマンドには、さらにコマンドのターゲット パスを指定することがあります。各クラスがこの処理をどのように構成する方法を次の表 標準のコマンド ルーティング 。コマンドのターゲットがコマンドのパスを指定する一般守実行は次のとおりです:
現在アクティブな子コマンドターゲットのオブジェクトに。
自身に。
他のコマンド ターゲットで。
このルーティング機能がどのように高くなりますか。ハンドラーがコマンドに応答して実行することをと比較して、ルーティングのコストが高くありません。ユーザーがユーザーインターフェイス オブジェクトと対話している場合にのみ、フレームワークはコマンドを生成することを忘れないでままにします。
標準のコマンド ルーティング
この型のオブジェクトがコマンドを受信したとき。.. |
それ自身ができ、それ以外のコマンドターゲットがこの順序でコマンドを処理する場合に作成します: |
---|---|
MDI フレーム ウィンドウ (CMDIFrameWnd) |
|
ドキュメント フレーム ウィンドウ (CFrameWnd、 CMDIChildWnd) |
|
ビュー |
|
Document |
|
ダイアログ ボックス |
|
上の表の記述の第 2 列、および数が他のオブジェクト、ドキュメントなど、最初の列の対応する項目を表示します。たとえば、順方向のドキュメント ビューへのコマンド 2 番目の列を読み取ると、さらにルーティングに従うに最初の列の 「docs」 " を参照してください。