vc6.0转vc2010编程中遇到的问题
1.添加自定义消息(Lesson16_ChatDlg.h文件中)
#define UM_SOCK WM_USER+1
2.添加消息响应函数原型的声明(Lesson16_ChatDlg.h文件)
afx_msg void OnSock(WPARAM, LPARAM);
3.添加消息映射(Lesson16_ChatDlg.cpp文件)
ON_MESSAGE(UM_SOCK, OnSock)
4.实现函数
void CLesson16_ChatDlg::OnSock(WPARAM wParam, LPARAM lParam)
{}
5.编译
error C2440: 'static_cast' : cannot convert from 'void (__thiscall CLesson16_ChatDlg::* )(WPARAM,LPARAM)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'
1> None of the functions with this name in scope match the target type
6.问题解决
修改2和4中的viod 为LRESULT 如下所示:
afx_msg LRESULT OnSock(WPARAM, LPARAM);
LRESULT CLesson16_ChatDlg::OnSock(WPARAM wParam, LPARAM lParam)
{
return TRUE;
}
7.重新编译通过
/***********************************************************************************************************************************/
补充:
不能转换void (_thiscall CMainFrame::*)(void)to LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)
开发平台由VC6.0升级至VS2010,需要将原有的项目迁移,可能碰到类似错误:
error C2440: 'static_cast' : cannot convert from 'void (__thiscall CMainFrame::* )(void)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'
VS2010对消息的检查更为严格,以前在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)
vc6.0转vc2010编程中遇到的问题相关推荐
- c语言编译面板上总有个0,C语言编程中常见问题.doc
C语言编程中常见问题 为什么vc6打开的文件却不能编译1 为什么一个vc6工程中有两个main函数不能编译成功?我想写两个程序怎么办?2 为什么v6不能编译程序,生成信息说compile和link都正 ...
- vc6.0 matlab混合编程,matlab2010 + vc6.0混合编程实例(调用dll)
不想解释太多直接上代码吧!!! 在对matlab配置后,上代码mcc -W cpplib:libMyAdd -T link:lib MyAdd -C就可以了,记得加上-C 在对VC6.0进行配置的时候 ...
- VC6.0实现网络编程弹出一个消息框
代码如下: #include <windows.h> INT WINAPI wWinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPWSTR IpCm ...
- 编程基础 垃圾回收_编程中的垃圾回收指南
编程基础 垃圾回收 什么是垃圾回收? (What is Garbage Collection?) In general layman's terms, Garbage collection (GC) ...
- VC6.0(VC++6.0)使用教程(使用VC6.0编写C语言程序)
VC6.0(VC++6.0)使用教程(使用VC6.0编写C语言程序) Visual C++ 6.0简称VC或者VC6.0,是微软1998年推出的一款C/C++ IDE,界面友好,调试功能强大.VC6. ...
- 使用VC6.0实现窗口的任意分割
一.关于CSplitterWnd类我们在使用CuteFtp或者NetAnt等工具的时候,一般都会被其复杂的界面所吸引,在这些界面中窗口被分割为若干的区域,真正做到了窗口的任意分割. 那么我们自己如何创 ...
- 在VC6.0中创建工程并输入源代码
为了把程序代码输入而交给计算机,需要使用VC 6.0的编辑器来完成.如前所述,首先要创建工程以及工程工作区,而后才能输入具体程序完成所谓的"编辑"工作(注意,该步工作在四步骤中最繁 ...
- C/C++多线程编程之一】VC6.0安装pthread
多线程编程之VC6.0安装pthread 多线程是C/C++的一个重要的概念,在windows下,需要安装pthread来支持多线程编程.以下配置本人亲测成功,另外此次配置实际上与编译器无关,故其他编 ...
- 一个系统中同时使用VC6.0+OpenCV1.0和VS2010+OpenCV2.4.6.0的方法
From: http://blog.csdn.net/zzy7222872/article/details/6047446 以前用的是VC6.0+OpenCV1.0的组合,一直用的很好.一般的图像处 ...
最新文章
- linux中断共享程序实现,如何在非实时linux上实现实时应用程序与内核模块之间共享存储器...
- 【OpenCV 4开发详解】点集拟合
- 【Android FFMPEG 开发】FFMPEG 初始化 ( 网络初始化 | 打开音视频 | 查找音视频流 )
- Java中的泛型方法
- php 使用redis
- e课表项目第二次冲刺周期第七天
- 【ARM】ARM体系结构-GPIO
- unity检测范围内敌人_Unity实现视野范围外死亡敌人的分数显示在屏幕内
- 完美:C# Blazor中显示Markdown并添加代码高亮
- rest api 示例2_REST API教程– REST Client,REST Service和API调用通过代码示例进行了解释
- 文档中某些特定数据查询
- 好风凭借力,送我上青云!
- Java 关于CoolProp的调用
- 智能制造与MES系统的内在联系
- matlab imcrop 用法
- 以太网实习_计算机网络实习心得体会
- JavaWeb 服务器与客户端储存
- #、##、#@在#define中的用法
- 聚合支付是下一个财富蓝海!
- java计算机毕业设计Vue垃圾分类指南平台设计与实现源码+mysql数据库+系统+lw文档+部署
热门文章
- tomcat安装并设置开机启动
- 让Vim更好用 for Mac OS X | Hessian's Blog
- 正则表达式,一篇就够了
- schedule调用相关整理
- 多台云服务器中Redis的主从复制
- linux grub内核选择,UBUNTU GRUB没有内核选项,怎么回事啊?
- 转:WCF基础知识问与答
- Socket API: setsockopt(), recvmsg(), sendmsg()函数
- BerryNet: Deep Learning Gateway on Raspberry Pi
- 开源GIS(十九)——WKT、WKB与GeoJSON