メッセージの処理とマップ
ここでは、MFC フレームワークがメッセージとコマンドを処理する方法と、メッセージとコマンドをハンドラー関数に関連付ける方法について説明します。
従来の Windows 向けプログラムでは、Windows メッセージは、ウィンドウ プロシージャの大きな switch ステートメントで処理されます。 MFC では、代わりにメッセージ マップを使用して、それぞれのクラス メンバー関数に対して直接メッセージを割り当てます。 メッセージ マップは、同じような用途で使用する仮想関数に比べて効率的で、アプリケーション、ドキュメント、ビューなど、最も適切な C++ オブジェクトメッセージを処理できます。 単一メッセージ、一定範囲内のメッセージ、コマンド ID、またはコントロール ID を割り当てることができます。
通常、メニュー、ツール バー ボタン、またはアクセラレータによって生成される WM_COMMAND メッセージでも、メッセージ マップ機構を使用します。 プログラム内のアプリケーション、フレーム ウィンドウ、ビュー、および Active ドキュメントの間のコマンド メッセージの標準ルーティングは、MFC で定義されます。 必要に応じて標準のルーティングをオーバーライドできます。
また、メッセージ マップを使用すると、メニューやツール バー ボタンなどのユーザー インターフェイス オブジェクトを現在の状況に合わせて有効にしたり、無効にすることもできます。
Windows のメッセージとメッセージ キューに関する一般的な説明については、Windows SDK の「Messages and Message Queues」を参照してください。