MFCの基礎 - ユーザ定義メッセージ
ナビゲーションに移動
検索に移動
概要
CWndの派生クラス等でユーザメッセージを定義して使う方法を纏める。
具体的には、SendMessage関数やPostMessage関数を用いて、ユーザメッセージを下記のように呼び出す。
[CWndの派生クラスへのポインタ]->SendMessage(メッセージ名, WPARAM, LPARAM);
ユーザメッセージの定義
メッセージのIDを定義するため、"stdafx.h"ファイル等に以下を追加する。
stdafx.h
#define [メッセージ名] WM_USER + [任意の整数値]
応答関数の追加
CWndの派生クラスのヘッダファイルに存在する"DECLARE_MESSAGE_MAP"マクロ内に、public属性で以下の関数を追加する。
CWndの派生クラス.h
afx_msg LRESULT [関数名](UINT wParam, LONG lParam);
メッセージマップに登録
CWndの派生クラスのcppファイルに存在する"BEGIN_MESSAGE_MAP"マクロ ~ "END_MESSAGE_MAP"マクロの間に、メッセージと関数の関係を以下のように登録する。
CWndの派生クラス.cpp
BEGIN_MESSAGE_MAP
// ...
ON_MESSAGE(メッセージ名, 関数名)
// ...
END_MESSAGE_MAP
関数の記述
CWndの派生クラスのcppファイルに応答関数を以下のように作成する。
CWndの派生クラス.cpp
LRESULT クラス名::関数名(UINT wParam, LONG lParam)
{
// do something
return 0;
}