error C2440 “static_cast” 无法从“void (__thiscall C* )(void)...
2016-01-20 11:04
274 查看
开发平台由VC6.0升级至VS2005以上的版本,需要将原有的项目迁移,可能碰到类似错误:
error C2440: “static_cast” 无法从“void (__thiscall C* )(void)...
VS2005之后的版本对消息的检查更为严格,以前在VC6下完全正常运行的消息映射在VS2005下编译不通过
OnMyMessage返回值必须为LRESULT,其形式为:afx_msg LRESULT OnMyMessage(WPARAM, LPARAM);如果不符合,则有错误提示:
解决方法如下:
首先,把原来的消息函数返回值类型改为LRESULT,函数内可以随便写个return TRUE;
然后消息函数的参数必须改写成(WPARAM wParam,LPARAM lParam)而不论这两个参数是否用得到;
最后,消息映射如ON_MESSAGE(WM_message,& OnMyMessage)。
error C2440: “static_cast” 无法从“void (__thiscall C* )(void)...
VS2005之后的版本对消息的检查更为严格,以前在VC6下完全正常运行的消息映射在VS2005下编译不通过
ON_MESSAGE(WM_message,OnMyMessage);
OnMyMessage返回值必须为LRESULT,其形式为:afx_msg LRESULT OnMyMessage(WPARAM, LPARAM);如果不符合,则有错误提示:
error C2440: “static_cast”: 无法从“void (__thiscall CXXX::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)” 在匹配目标类型的范围内没有具有该名称的函数 error C2440: “static_cast”: 无法从“void (__thiscall CXXX::* )(void)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”在匹配目标类型的范围内没有具有该名称的函数
解决方法如下:
首先,把原来的消息函数返回值类型改为LRESULT,函数内可以随便写个return TRUE;
然后消息函数的参数必须改写成(WPARAM wParam,LPARAM lParam)而不论这两个参数是否用得到;
最后,消息映射如ON_MESSAGE(WM_message,& OnMyMessage)。
相关文章推荐
- Mp4v2实现h264+aac打包成Mp4视频文件
- 微信支付开发(1) JS API支付
- Spring MVC MultipartFile实现图片上传
- background-position解析
- 在eclipse中怎么导入包?
- Unity工具菜单翻译(二)
- iOS 开发微信支付
- ubuntu 12.04安装qq2015
- 继电保护与自动装置
- 状态管理cookie 案例
- mysql之MMM高可用方案简介
- 仓库入仓-手机条码扫描
- WPF写的一个使用Log4net.dll库的demo
- WebViewJavascriptBridge使用
- [置顶] 当jQuery遭遇CoffeeScript——妙不可言
- 集合 Swift 增删改查
- oracle表空间利用率查询
- codeforces 614A Link/Cut Tree
- Retrofit 2.0 最新版本beta3.0变化
- AsyncTask实现的原理和适用的优缺点