メッセージの送信と受信
プロセスの送信部分と、フレームワークがどのように応答するかを検討します。
ほとんどのメッセージは、プログラムとのユーザー操作の結果として生成されます。 コマンドは、メニュー項目またはツールバー ボタンのマウス クリック、またはアクセラレータのキー入力によって生成されます。 また、ユーザーは、ウィンドウの移動やサイズ変更などを行って、Windows メッセージを生成します。 その他の Windows メッセージは、プログラムの起動や終了などのイベントが発生したとき、Windows がフォーカスを取得したり失ったりしたときに送信されます。 コントロール通知メッセージは、マウス クリックや、ダイアログ ボックスのボタンやリストボックス コントロールなどのコントロールを使用したその他のユーザー操作によって生成されます。
CWinApp
クラスの Run
メンバー関数は、メッセージを取得し、適切なウィンドウにディスパッチします。 ほとんどのコマンド メッセージは、アプリケーションのメイン フレーム ウィンドウに送信されます。 クラス ライブラリによって定義済みの WindowProc
はメッセージを取得し、受信したメッセージのカテゴリに応じて異なる方法でルーティングします。
次に、プロセスの受信部分を検討します。
メッセージの最初の受信者は、ウィンドウ オブジェクトである必要があります。 Windows メッセージは、通常、そのウィンドウ オブジェクトによって直接処理されます。 コマンド メッセージは、通常、アプリケーションのメイン フレーム ウィンドウで生成され、「コマンド ルーティング」に記述されているコマンド ターゲット チェーンにルーティングされます。
メッセージまたはコマンドを受け取ることができる各オブジェクトには、メッセージまたはコマンドとそのハンドラー名を組み合わせた独自のメッセージ マップがあります。
コマンド ターゲット オブジェクトがメッセージまたはコマンドを受け取ると、メッセージ マップで一致が検索されます。 メッセージのハンドラーが見つかった場合は、ハンドラーを呼び出します。 メッセージ マップの検索方法の詳細については、「フレームワークのメッセージマップ検索方法」を参照してください。 「フレームワークのコマンド」の図をもう一度確認してください。