文章类型: VC&C++
关键词: VC,,C2440,static_cast,__thiscall,CMainFrame,转换,AFX_PMSG
内容摘要: VC 禁止显示状态 错误 C2440 “static_cast”: 无法从“BOOL (__thiscall CMainFrame::* )(void)”转换为“AFX_PMSG

VC 禁止显示状态 错误 2440 “static_cast”: 无法从“BOOL (__thiscall CMainFrame::* )(void)”转换为“AFX_PMSG

2016/8/4 9:55:25    来源:apple    阅读:

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,通过~

↑ 上一篇文章:error C2440 “static_cast” 无法从“void (__thiscall C* )(void)... 关键词:编译出错,VC6,VS2005,VS2008,VS201.. 发布日期:2016/8/3 15:33:52
↓ 下一篇文章:CString 和 LPCTSTR 之间的转换 及 LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR的区分与转化 关键词:CString,LPCTSTR,转换,LPSTR,LPW.. 发布日期:2016/8/4 15:12:30
相关文章:
CSizingControlBar Error C2440: “static_cast”: 无法从“UINT (__thiscall CSizingControlBarG::* )(CPoint)”转换为>>> 关键词:CSizingControlBar,Error,C2440,static_cast,无法从,UI.. 发布日期:2016-08-04 16:55
VC中常用的数据类型之间的转换string/LPCTSTR/LPSTR/VARIANT等 关键词:VC,数据类型,转换,string,LPCTSTR,LPSTR,VARIANT,CString,.. 发布日期:2017-11-08 10:51
VC CString 转换 const char* 关键词:VC,CString,转换,const,char* 发布日期:2017-08-25 11:42
相关目录:.NETVC&C++软件开发
我要评论
正在加载评论信息......