MESSAGE_HANDLER
更新 : 2007 年 11 月
メッセージ マップにエントリを定義します。
MESSAGE_HANDLER(
msg,
func
)
パラメータ
msg
[入力] Windows メッセージ。func
[入力] メッセージ ハンドラ関数の名前。
解説
MESSAGE_HANDLER は、Windows メッセージを指定されたハンドラ関数に割り当てます。
MESSAGE_HANDLER マクロに指定する関数は、いずれも次のように定義する必要があります。
LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
MessageHandler が呼び出される前に、メッセージ マップでは bHandled が TRUE に設定されます。MessageHandler は、メッセージをすべて処理できない場合、bHandled を FALSE に設定して、メッセージ処理がさらに必要であることを示す必要があります。
メモ : |
---|
メッセージ マップは、常に BEGIN_MSG_MAP で開始します。開始した後、ALT_MSG_MAP を使って、さらに代替メッセージ マップを宣言することもできます。END_MSG_MAP マクロは、メッセージ マップの終了位置を示します。どのメッセージ マップにも、BEGIN_MSG_MAP と END_MSG_MAP のインスタンスが 1 つずつ生成されている必要があります。 |
MESSAGE_HANDLER のほかに、COMMAND_HANDLER と NOTIFY_HANDLER を使用して WM_COMMAND メッセージと WM_NOTIFY メッセージをそれぞれ割り当てることができます。
ATL でのメッセージ マップの使い方の詳細については、「メッセージ マップ」を参照してください。
使用例
class CMyBaseWindow : public CWindowImpl<CMyBaseWindow>
{
public:
BEGIN_MSG_MAP(CMyBaseWindow)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()
// When a CMyBaseWindow object receives a WM_CREATE message, the message
// is directed to CMyBaseWindow::OnCreate for the actual processing.
LRESULT OnCreate(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
};
必要条件
ヘッダー : atlwin.h