コマンド ルーティング
コマンドを使用するには、MFC クラス ウィザードを使って、コマンドとハンドラー関数を対応付けるメッセージ マップを作成する必要があります。 コマンド ハンドラーのコードも記述する必要があります。
通常、Windows メッセージはメイン フレーム ウィンドウに送信されますが、コマンド メッセージはさらに他のオブジェクトにルーティングされます。 フレームワークは、コマンド ターゲット オブジェクトの標準シーケンスに従って、コマンドのハンドラーが存在すると思われるオブジェクトの 1 つにコマンドをルーティングします。 各コマンド ターゲット オブジェクトは、受信したメッセージを処理できるかどうかをメッセージ マップで確認します。
メッセージ マップを確認するタイミングは、コマンド ターゲット クラスによって異なります。 通常、クラスは、コマンドを最初に特定の他のオブジェクトにルーティングして、そのオブジェクトでコマンドを処理しようとします。 どのオブジェクトもコマンドを処理できない場合、元のクラスは独自のメッセージ マップをチェックします。 その後、元のクラスがハンドラー自体を提供できない場合は、そのコマンドをさらに他のコマンド ターゲットにルーティングします。 以下の「 標準のコマンド ルート 」の表は、各クラスのチェック シーケンスを示しています。 コマンド ターゲットがコマンドをルーティングする一般的な順序は、次のとおりです。
現在アクティブな子コマンド ターゲット オブジェクト
StorSimple デバイス自体。
その他のコマンド ターゲット
このルーティング メカニズムは、コマンドに応答するハンドラーの処理に比べると、それほど負担になりません。 フレームワークでコマンドが生成されるのは、ユーザーがユーザー インターフェイス オブジェクトを操作したときだけです。
標準のコマンド ルート
コマンドを受信したオブジェクトの種類 = = | コマンドを処理する機会が与えられるコマンド ターゲット オブジェクトとその順序 |
---|---|
MDI フレーム ウィンドウ (CMDIFrameWnd ) |
1. アクティブ CMDIChildWnd 2. このフレーム ウィンドウ 3. アプリケーション ( CWinApp オブジェクト) |
ドキュメント フレーム ウィンドウ (CFrameWnd 、CMDIChildWnd ) |
1. アクティブ ビュー 2. このフレーム ウィンドウ 3. アプリケーション ( CWinApp オブジェクト) |
ビュー | 1. このビュー 2. ビューにアタッチされたドキュメント |
Document | 1. このドキュメント 2. ドキュメントにアタッチされたドキュメント テンプレート |
ダイアログ ボックス | 1. このダイアログ ボックス 2. ダイアログ ボックスを所有するウィンドウ 3. アプリケーション ( CWinApp オブジェクト) |
前の表の右側の列に他のオブジェクト (ドキュメントなど) が示されている場合は、左側の列の対応する項目を確認してください。 たとえば、右側の列を見ると、ビューがコマンドをドキュメントに転送していることがわかるので、左側の列の「ドキュメント」のルーティングも参照してください。