VC 禁止显示状态 错误C2440“static_cast”: 无法从“BOOL (__thiscall CMainFrame::* )(void)”转换为“AFX_PMSG
关于上面的这个错误,查询了很多资料,最后与前面的问题做了比较,得到另一个帖子的一些启发,如下内容:
"
回复者:我也遇到过同样的问题,将int改为void,然后将原函数中的return 0;这句话删掉。一切就OK了。
追问:
我的返回值是有用的的不是返回一个,是好几个。
追答:
这是个矛盾体,
回复者:那样就冲突了,既是消息映射,又要有返回值。这个是冲突的。
"
AFX_PMSG类型:
void (AFX_MSG_CALL CCmdTarget::* )(void)
发生错误的源代码:
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_COMMAND(IDM_PATIENT_VIEWREPORT, OnPatientViewReport)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
关于我的理解,既然是消息映射,那就用前面的办法吧!
使用“ON_MESSAGE(IDM_PATIENT_VIEWREPORT, OnPatientViewReport)//VC6->VS2015, 2016.8.4 by sms,将上面语句进行修正”,来代替“ON_COMMAND(IDM_PATIENT_VIEWREPORT, OnPatientViewReport)”,
同时还要参考前一篇文章的方法进行修改就行了。
OK Rebuild,通过~