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