error C2440: “static_cast”

前言:vc6.0程序用vs2003打开运行,提示如下错误:

error C2440: “static_cast”: 无法从“void (__thiscall CMainFrame::* )(void)”转换为“LRESULT(_thischall CWnd::*)(WPARAM, LPARAM)


头文件MainFrm.h: 
#define UM_PROGRESS WM_USER+1 //定义消息 
afx_msg void OnProgress(); // 生成的消息映射函数 
源文件MainFrm.cpp: 
//消息映射 
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) 
ON_MESSAGE(UM_PROGRESS,&CMainFrame::OnProgress) 
END_MESSAGE_MAP() 
//消息实现 
void CMainFrame::OnProgress() 
{ 
//todo: 
} 

错误定位:

ON_MESSAGE(WM_message,OnProgress);

OnProgress返回值必须为LRESULT,其形式需为:

afx_msg LRESULT OnProgress(WPARAM, LPARAM)

如果不符合,则有错误提示:

error C2440: “static_cast”: 无法从“void (__thiscall CMainFrame::* )(void)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”

解决方法:

首先将消息映射修改为:

afx_msg LRESULT OnProgress(WPARAM wParam,LPARAM lParam);

其次消息实现修改:

LRESULT CMainFrame::OnProgress(WPARAM wParam,LPARAM lParam) 
{ 
//todo: 

return TURE;
} 

再次运行,成功!

总结: VS200*对消息的检查更为严格,以前在VC6下完全正常运行的消息映射在VS2008下编译不通过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wcyd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值