メッセージの処理とマップ
この一連の記事では、MFC フレームワークがメッセージとコマンドを処理する方法と、開発者がメッセージとコマンドをハンドラー関数に関連付ける方法について説明します。
オーソドックスな Windows プログラムでは、Windows のメッセージが、ウィンドウ プロシージャ内の大きな switch ステートメントの中で処理されています。 MFC では、これに代わり、メッセージ マップを使用して、直接メッセージが別個のクラス メンバー関数にマッピングされます。 この点でメッセージ マップは、仮想関数よりも効率的です。アプリケーション、ドキュメント、ビューなど、最適な C++ オブジェクトにメッセージを処理させることができます。 単一のメッセージまたは一連のメッセージ、コマンド ID、コントロール ID をマッピングできます。
メッセージマップのメカニズムは、WM_COMMAND メッセージ (通常、メニュー、ツール バーのボタン、アクセラレータによって生成されます) で使用することもできます。 MFC では、プログラム内のアプリケーション、フレーム ウィンドウ、ビュー、アクティブ ドキュメントにおけるコマンド メッセージの標準のルーティングが定義されています。 このルーティングは、必要に応じてオーバーライドできます。
メッセージ マップは、ユーザーインターフェイス オブジェクト (メニュー、ツール バーのボタンなど) を更新し、そのときどきのコンテキストに合わせて有効にしたり無効にしたりする手段ともなります。
Windows におけるメッセージやメッセージ キューについての一般情報については、Windows SDK の「メッセージとメッセージ キュー」を参照してください。