!!!MFC イベントハンドリング [VC++][VisualStudio 2008]{{category VisualStudio操作}}{{category MFC}} {{amazon 4891000503}} ---- CView、CWndに定義されている「On」で始まる関数「OnKeyDown」などフレームワークから呼び出されるのイベントハンドラは、仮想関数ではない。 フレームワークと関数を結び付けるには、「メッセージマップ」が必要。 !!イベントハンドラの実装 ClassWizardとウィザードバーは、Visual C++ .NET 2002 で削除された。以下の手順でイベントハンドラを追加する。 {{ref_image mfc02_01.jpg}} *以下のコード生成を自動化 !ビュークラスのメンバー関数 CMFC01View.cpp void CMFC01View::OnLButtonDblClk(UINT nFlags, CPoint point) { // TODO: ここにメッセージ ハンドラ コードを追加するか、既定の処理を呼 CView::OnLButtonDblClk(nFlags, point); } !プロトタイプ宣言 CMFC01View.h afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); *afx_msg はマーカーであり、何もしない !メッセージマップマクロ フレームワークと関数のバインド CMFC01View.cpp BEGIN_MESSAGE_MAP(CMFC01View, CView) ON_WM_LBUTTONDBLCLK() END_MESSAGE_MAP() また、ヘッダーファイルに以下のステートメントが必要 CMFC01View.h DECLARE_MESSAGE_MAP() {{ref MFC01View.lzh}} ---- {{amazon B0011410RG}}