1.
BEGIN_MESSAGE_MAP(CMyPosDlg, CDialog)
//{{AFX_MSG_MAP(CMyPosDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_CREATE()
ON_WM_DESTROY()
ON_WM_CLOSE()
//}}AFX_MSG_MAP
ON_MESSAGE(WM_OFFDUTY,OnMyOffdutyMessage)//Map WM_OFFDUTY message to OnMyMessage function.
END_MESSAGE_MAP()2.
#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)) },3.
void CMyPosDlg::OnMyOffdutyMessage() 
{
EndDialog(1);//Must use this function to close the dialog!!!!!!!!!!
}class CMyPosDlg : public CDialogclass CDialog : public CWnd

解决方案 »

  1.   

    ON_MESSAGE(WM_OFFDUTY,OnMyOffdutyMessage)的参数“OnMyOffdutyMessage”是CWnd一个成员啊,为什么我编译的时候老是出现“error C2440: 'static_cast' : cannot convert from 'void (__thiscall CMyPosDlg::* )(void)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'
    ”这样的错误?
      

  2.   

    是不是有关product或者private的继承的问题呢?
      

  3.   

    #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)) },这里应该不是以逗号结束吧