Share via


コマンド ルーティング

コマンドを使用するには、MFC クラス ウィザードを使って、コマンドとハンドラー関数を対応付けるメッセージ マップを作成する必要があります。 コマンド ハンドラーのコードも記述する必要があります。

通常、Windows メッセージはメイン フレーム ウィンドウに送信されますが、コマンド メッセージはさらに他のオブジェクトにルーティングされます。 フレームワークは、コマンド ターゲット オブジェクトの標準シーケンスに従って、コマンドのハンドラーが存在すると思われるオブジェクトの 1 つにコマンドをルーティングします。 各コマンド ターゲット オブジェクトは、受信したメッセージを処理できるかどうかをメッセージ マップで確認します。

メッセージ マップを確認するタイミングは、コマンド ターゲット クラスによって異なります。 通常、クラスは、コマンドを最初に特定の他のオブジェクトにルーティングして、そのオブジェクトでコマンドを処理しようとします。 どのオブジェクトもコマンドを処理できない場合、元のクラスは独自のメッセージ マップをチェックします。 その後、元のクラスがハンドラー自体を提供できない場合は、そのコマンドをさらに他のコマンド ターゲットにルーティングします。 以下の「 標準のコマンド ルート 」の表は、各クラスのチェック シーケンスを示しています。 コマンド ターゲットがコマンドをルーティングする一般的な順序は、次のとおりです。

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

  2. StorSimple デバイス自体。

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

このルーティング メカニズムは、コマンドに応答するハンドラーの処理に比べると、それほど負担になりません。 フレームワークでコマンドが生成されるのは、ユーザーがユーザー インターフェイス オブジェクトを操作したときだけです。

標準のコマンド ルート

コマンドを受信したオブジェクトの種類 = = コマンドを処理する機会が与えられるコマンド ターゲット オブジェクトとその順序
MDI フレーム ウィンドウ (CMDIFrameWnd) 1. アクティブ CMDIChildWnd
2. このフレーム ウィンドウ
3. アプリケーション (CWinApp オブジェクト)
ドキュメント フレーム ウィンドウ (CFrameWndCMDIChildWnd) 1. アクティブ ビュー
2. このフレーム ウィンドウ
3. アプリケーション (CWinApp オブジェクト)
ビュー 1. このビュー
2. ビューにアタッチされたドキュメント
Document 1. このドキュメント
2. ドキュメントにアタッチされたドキュメント テンプレート
ダイアログ ボックス 1. このダイアログ ボックス
2. ダイアログ ボックスを所有するウィンドウ
3. アプリケーション (CWinApp オブジェクト)

前の表の右側の列に他のオブジェクト (ドキュメントなど) が示されている場合は、左側の列の対応する項目を確認してください。 たとえば、右側の列を見ると、ビューがコマンドをドキュメントに転送していることがわかるので、左側の列の「ドキュメント」のルーティングも参照してください。

関連項目

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