Article ID: 195032
Article Last Modified on 11/21/2006
ON_MESSAGE()
ON_REGISTERED_MESSAGE()
ON_THREAD_MESSAGE()
ON_REGISTERED_THREAD_MESSAGE()
afx_msg LRESULT OnMyMsg(WPARAM, LPARAM)The correct signature for ON_REGISTERED_MESSAGE is:
afx_msg LRESULT OnMyRegisteredMsg(WPARAM, LPARAM)The correct signature for ON_THREAD_MESSAGE is:
afx_msg void OnMyThreadMsg(WPARAM, LPARAM)The correct signature for ON_REGISTERED_THREAD_MESSAGE is:
afx_msg void OnMyRegisteredThreadMsg(WPARAM, LPARAM)For signatures for other versions of Visual C++, please consult help for ON_MESSAGE(), ON_REGISTERED_MESSAGE(), ON_THREAD_MESSAGE() and ON_REGISTERED_THREAD_MESSAGE().
#undef ON_MESSAGE
#define ON_MESSAGE(message, memberFxn) \
{ message, 0, 0, 0, AfxSig_lwl, \
(AFX_PMSG) (AFX_PMSGW) (static_cast< LRESULT (AFX_MSG_CALL
CWnd::*)(WPARAM, LPARAM) > (&memberFxn)) },
#undef ON_REGISTERED_MESSAGE
#define ON_REGISTERED_MESSAGE(nMessageVariable, memberFxn) \
{ 0xC000, 0, 0, 0, (UINT)(UINT*)(&nMessageVariable), \
(AFX_PMSG)(AFX_PMSGW)(static_cast<LRESULT (AFX_MSG_CALL
CWnd::*)(WPARAM, LPARAM)>(&memberFxn)) },
#undef ON_THREAD_MESSAGE
#define ON_THREAD_MESSAGE(message, memberFxn) \
{ message, 0, 0, 0, AfxSig_vwl, \
(AFX_PMSG)(AFX_PMSGT)(static_cast<void (AFX_MSG_CALL
CWinThread::*)(WPARAM, LPARAM)>(&memberFxn)) },
#undef ON_REGISTERED_THREAD_MESSAGE
#define ON_REGISTERED_THREAD_MESSAGE(nMessageVariable, memberFxn) \
{ 0xC000, 0, 0, 0, (UINT)(UINT*)(&nMessageVariable), \
(AFX_PMSG)(AFX_PMSGT)(static_cast<void (AFX_MSG_CALL
WinThread::*)(WPARAM, LPARAM)>(&memberFxn)) },
The ON_MESSAGE(), ON_REGISTERED_MESSAGE(), ON_THREAD_MESSAGE() and
ON_REGISTERED_THREAD_MESSAGE() macros are defined in
\mfc\include\afxmsg_.h.
#define WM_MYMSG WM_USER+555
afx_msg void OnMyMsg(void); //in header file
void CSampleDlg::OnMyMsg(void) {} //in source file
AfxMessageBox("Got WM_MYMSG");
ON_MESSAGE(WM_MYMSG, OnMyMsg)
SendMessage(WM_MYMSG);
Additional query words: crash access violation release debug message map
Keywords: kbprb KB195032