メッセージ マップの所在
アプリケーション ウィザードを使ってスケルトン アプリケーションを新規作成すると、生成されたコマンド ターゲット クラスのメッセージ マップが自動的に作られます。 つまり、独自に派生したアプリケーション、ドキュメント、ビュー、フレーム ウィンドウの各クラスに対してメッセージ マップが作成されます。 一部のメッセージと定義済みコマンドについては、メッセージ マップのエントリもアプリケーション ウィザードによって自動的に作成されます。プログラマがハンドラー名を追加できるように、プレースホルダーだけが作成される場合もあります。
メッセージ マップは、クラスの .CPP ファイルにあります。 アプリケーション ウィザードで作成した基本のメッセージ マップには、各クラスで処理するメッセージやコマンドのエントリを [プロパティ] ウィンドウで追加できます。 一般的なメッセージ マップにエントリを追加すると、次のようになります。
BEGIN_MESSAGE_MAP(CMyView, CFormView)
ON_WM_MOUSEACTIVATE()
ON_COMMAND(ID_EDIT_CUT, &CMyView::OnEditCut)
ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, &CMyView::OnUpdateEditCut)
ON_BN_CLICKED(IDC_MYBUTTON, &CMyView::OnBnClickedMybutton)
ON_WM_CREATE()
END_MESSAGE_MAP()
メッセージ マップはマクロの集合です。 メッセージ マップは、BEGIN_MESSAGE_MAP と END_MESSAGE_MAP という 2 つのマクロで囲まれます。 その他のマクロ (ON_COMMAND など) でメッセージ マップの内容を定義します。
注意
メッセージ マップ マクロの末尾にはセミコロンを付けません。
クラス追加ウィザードを使って新しいクラスを作成すると、そのクラスのメッセージ マップが自動的に生成されます。 ソース コード エディターを使うと、メッセージ マップを手作業で作成できます。