d:\relaytest\neucomctrl\uniterrorsetdlg.cpp(43) : error C2440: 'static_cast' : cannot convert from 'void (__thiscall CUnitErrorSetDlg::* )(WPARAM,LPARAM)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'vc2005报了一个这样的错误。怎么办啊?
UnitErrorSetDlg.h有
class CLASS_DECL_NEUCOM CUnitErrorSetDlg : public CDialog
{protected:
afx_msg void OnParaChange(WPARAM wParam, LPARAM lParam);
}
uniterrorsetdlg.cpp 有
BEGIN_MESSAGE_MAP(CUnitErrorSetDlg, CDialog)
//{{AFX_MSG_MAP(CUnitErrorSetDlg)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_PARACHANGE, OnParaChange)
END_MESSAGE_MAP()void CUnitErrorSetDlg::OnParaChange(WPARAM wParam, LPARAM lParam)
{
m_bModify=true;
}

解决方案 »

  1.   

    根据报错的信息,是指针类型转换出错,你的源程序中没有看到显式的指针,
    据class   CLASS_DECL_NEUCOM   CUnitErrorSetDlg   :   public   CDialog 这一行中的CLASS_DECL_NEUCOM来看,你是要将这个类作为导入或导出用途的.
    将afx_msg   void   OnParaChange(WPARAM   wParam,   LPARAM   lParam); 改写为
    LRESULT OnParaChange(WPARAM   wParam,   LPARAM   lParam); LRESULT CUnitErrorSetDlg::OnParaChange(WPARAM   wParam,   LPARAM   lParam) 

    m_bModify=true; 
    }
      

  2.   

    谢谢两位的热情解答。
    我想问一下,为什么要返回LRESULT,实际是我并不想要返回东西啊
      

  3.   

    VS2005里强制要了。VC6里是不用的。
    我也刚转用2005.也遇到这问题:)