error C2440 “static_cast” 无法从“void (__thiscall CPppView )(void)...

转载 2012年03月23日 15:55:02

不能转换void (_thiscall CMainFrame::*)(void)to LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)2010-05-13 11:35开发平台由VC6.0升级至VS2005,需要将原有的项目迁移,可能碰到类似错误:
error C2440: 'static_cast' : cannot convert from 'void (__thiscall CMainFrame::* )(void)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'  

VS2005对消息的检查更为严格,以前在VC6下完全正常运行的消息映射在VS2005下编译不通过

ON_MESSAGE(WM_message,OnMyMessage);
   OnMyMessage返回值必须为LRESULT,其形式为:afx_msg LRESULT OnMyMessage(WPARAM, LPARAM);如果不符合,则有错误提示:
     error C2440: “static_cast”: 无法从“void (__thiscall CPppView::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”
        在匹配目标类型的范围内没有具有该名称的函数
     error C2440: “static_cast”: 无法从“void (__thiscall CPppView::* )(void)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”
        在匹配目标类型的范围内没有具有该名称的函数

解决方法如下:

首先,把原来的消息函数返回值类型改为LRESULT,函数内可以随便写个return TRUE; 然后消息函数的参数必须改写成(WPARAM wParam,LPARAM lParam)而不论这两个参数是否用得到;最后,消息映射如ON_MESSAGE(WM_message,& OnMyMessage)

相关文章推荐

error C2440 “static_cast” 无法从“void (__thiscall C* )(void)...

开发平台由VC6.0升级至VS2005以上的版本,需要将原有的项目迁移,可能碰到类似错误: error C2440:  “static_cast” 无法从“void (__thiscall C* )...

error C2440 “static_cast” 无法从“void (__thiscall CPppView )(void)...

不能转换void (_thiscall CMainFrame::*)(void)to LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)2010-05-13 11...
  • bood123
  • bood123
  • 2015年08月28日 15:38
  • 1102

VC++常见错误原因解析--error LNK2019: 无法解析的外部符号 "public: void __thiscall

error LNK2019: 无法解析的外部符号 "public: void __thiscall 这种常见错误产生的几种原因解析...

关于这样的错误 libcpmtd.lib(string.obj) : error LNK2005: "public: void __thiscall

关于这样的错误 libcpmtd.lib(string.obj) : error LNK2005: "public: void __thiscall
  • cay22
  • cay22
  • 2011年05月12日 20:05
  • 11034

error C2440: ‘static_cast‘ LRESULT LRESULT错误

最近开发平台由VC6.0升级至VS2005,需要将原有的项目迁移,特将碰到的问题归纳如下: 1消息映射 VS2005对消息的检查更为严格,以前在VC6下完全正常运行的消息映射在VS2005下编译不...
  • zjty0
  • zjty0
  • 2012年12月21日 20:51
  • 422

error C2440: 'static_cast' : cannot convert from 'LRESULT (__thiscall CchatDlg::* )(CPoint)' to 'UI

出现这个错误的原因可是“人力不可抗拒”之原因造成的,因为旧版本的 ON_WM_NCHITTEST 宏使用了  UINT (__thiscall CWzButton::* )(CPoint);  类型的...
  • zmq5411
  • zmq5411
  • 2011年03月29日 15:16
  • 2323

error C2440: 'static_cast' : cannot convert from 'LRESULT (__thiscall CchatDlg::* )(CPoint)' to 'UI

出现这个错误的原因可是“人力不可抗拒”之原因造成的,因为旧版本的 ON_WM_NCHITTEST 宏使用了   UINT (__thiscall CWzButton::* )(CPoint); ...

使用Objective-C的+(void)initialize初始化static变量

在《Objective C类方法load和initialize的区别》一文中,我介绍了Objective-C对待+(void)initialize和+(void)load两个方法在编译和执行时出现的不...

error LNK2001: 无法解析的外部符号 "void * __cdecl operator new(unsigned int)"

error LNK2001: 无法解析的外部符号 "void * __cdecl operator new(unsigned int)" Posted on 2005-03-18 15:09 j...

error LNK2001: 无法解析的外部符号 “unsigned int __cdecl upx_adler32(void const *,unsigned int,unsigned int)”

转自VC错误:http://www.vcerror.com/?p=1413 问题描述: 把upx源码的exe工程改造成了一个lib库文件,编译了一个exe调用lib库文件中的函数,结果ex...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:error C2440 “static_cast” 无法从“void (__thiscall CPppView )(void)...
举报原因:
原因补充:

(最多只允许输入30个字)