error C2440: 'static_cast' : cannot convert from 'void (__thiscall CTCP服务器程序Dlg::* )(WPARAM,LPARAM)'

原创 2013年12月02日 20:56:20

 

在VC6.0下能够运行的代码一由于开发平台的升级可能会导致一些错误的产生,比如今天在进行winsocket编程中在VC6.0下能都运行的代码

自定义消息映射:ON_MESSAGE(WM_SOCKET,OnSocket)

在CTCP服务器Dlg.h中的定义的自定义消息

#define WM_SOCKET WM_USER+100

class CTCP服务器Dlg :public CDialog

{

.... //省略若干代码

protected:

//自定义消息响应函数

afx_msg void OnSocket(WPARAM wParam,LPARAM lParam);

}

void CTCP服务器Dlg::OnSocket(WPARAM wParam,LPARAM lParam)

{

......//省略代码

}

当编译时会产生错误:error C2440: 'static_cast' : cannot convert from 'void (__thiscall CTCP服务器程序Dlg::* )(WPARAM,LPARAM)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'

在匹配目标类型的范围内没有具有该名称的函数

因为vs2010对消息的检查更为严格,所以虽然上面的代码可以在vc6.0下运行,但是在vs2010下就会出错。

ON_MESSAGE(WM_SOCKET,OnSocket);
OnMyMessage返回值必须为LRESULT,其形式为:afx_msg LRESULT OnMyMessage(WPARAM, LPARAM);如果不符合,则有错误提示:

解决的办法是:

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


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

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

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

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

error C2440: 'static_cast' LRESULT LRESULT错误

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

Error 1 error C2440: 'initializing' : cannot convert from 'wchar_t *' to 'char *'

VS2008下面将 CString转化为char* 的问题  使用CString的GetBuffer方法         CString origCString("...

FreeGLUT Tips: Resolve compile error C2664: cannot convert argument 2 from '_TCHAR *[]' to 'char **'

解决编译OpenGL/FreeGLUT应用程序时遇到的编译错误:error C2664

The resolution of ERROR C2662: cannot convert 'this' pointer from "const Class-Type" to "Class&"

Preface:因为今天码代码时出现了this指针不匹配情况,故写下这篇备忘日志。同时第一次使用纯英文来尝试写,也就是练习英文写作能力。

关于C++ error C2662 cannot convert 'this' pointer from...

做一个很简单的C++ 实验,竟然r

关于VS2005的error C2664: cannot convert parameter 2 from 'const char [2]' to 'LPCWSTR

一、VS2005设置UNICODE或ASCII字符集问题 VS2005开发程序时,默认的字符集是Unicode。所以如果程序中使用字符常量一定要显示转换为Unicode型,否则编译时报错。 如果你...

s3c2440 udp服务器程序

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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