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编程中遇到的问题相关推荐

  1. c语言编译面板上总有个0,C语言编程中常见问题.doc

    C语言编程中常见问题 为什么vc6打开的文件却不能编译1 为什么一个vc6工程中有两个main函数不能编译成功?我想写两个程序怎么办?2 为什么v6不能编译程序,生成信息说compile和link都正 ...

  2. vc6.0 matlab混合编程,matlab2010 + vc6.0混合编程实例(调用dll)

    不想解释太多直接上代码吧!!! 在对matlab配置后,上代码mcc -W cpplib:libMyAdd -T link:lib MyAdd -C就可以了,记得加上-C 在对VC6.0进行配置的时候 ...

  3. VC6.0实现网络编程弹出一个消息框

    代码如下: #include <windows.h> INT WINAPI wWinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPWSTR IpCm ...

  4. 编程基础 垃圾回收_编程中的垃圾回收指南

    编程基础 垃圾回收 什么是垃圾回收? (What is Garbage Collection?) In general layman's terms, Garbage collection (GC) ...

  5. 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. ...

  6. 使用VC6.0实现窗口的任意分割

    一.关于CSplitterWnd类我们在使用CuteFtp或者NetAnt等工具的时候,一般都会被其复杂的界面所吸引,在这些界面中窗口被分割为若干的区域,真正做到了窗口的任意分割. 那么我们自己如何创 ...

  7. 在VC6.0中创建工程并输入源代码

    为了把程序代码输入而交给计算机,需要使用VC 6.0的编辑器来完成.如前所述,首先要创建工程以及工程工作区,而后才能输入具体程序完成所谓的"编辑"工作(注意,该步工作在四步骤中最繁 ...

  8. C/C++多线程编程之一】VC6.0安装pthread

    多线程编程之VC6.0安装pthread 多线程是C/C++的一个重要的概念,在windows下,需要安装pthread来支持多线程编程.以下配置本人亲测成功,另外此次配置实际上与编译器无关,故其他编 ...

  9. 一个系统中同时使用VC6.0+OpenCV1.0和VS2010+OpenCV2.4.6.0的方法

    From:  http://blog.csdn.net/zzy7222872/article/details/6047446 以前用的是VC6.0+OpenCV1.0的组合,一直用的很好.一般的图像处 ...

最新文章

  1. linux中断共享程序实现,如何在非实时linux上实现实时应用程序与内核模块之间共享存储器...
  2. 【OpenCV 4开发详解】点集拟合
  3. 【Android FFMPEG 开发】FFMPEG 初始化 ( 网络初始化 | 打开音视频 | 查找音视频流 )
  4. Java中的泛型方法
  5. php 使用redis
  6. e课表项目第二次冲刺周期第七天
  7. 【ARM】ARM体系结构-GPIO
  8. unity检测范围内敌人_Unity实现视野范围外死亡敌人的分数显示在屏幕内
  9. 完美:C# Blazor中显示Markdown并添加代码高亮
  10. rest api 示例2_REST API教程– REST Client,REST Service和API调用通过代码示例进行了解释
  11. 文档中某些特定数据查询
  12. 好风凭借力,送我上青云!
  13. Java 关于CoolProp的调用
  14. 智能制造与MES系统的内在联系
  15. matlab imcrop 用法
  16. 以太网实习_计算机网络实习心得体会
  17. JavaWeb 服务器与客户端储存
  18. #、##、#@在#define中的用法
  19. 聚合支付是下一个财富蓝海!
  20. java计算机毕业设计Vue垃圾分类指南平台设计与实现源码+mysql数据库+系统+lw文档+部署

热门文章

  1. tomcat安装并设置开机启动
  2. 让Vim更好用 for Mac OS X | Hessian's Blog
  3. 正则表达式,一篇就够了
  4. schedule调用相关整理
  5. 多台云服务器中Redis的主从复制
  6. linux grub内核选择,UBUNTU GRUB没有内核选项,怎么回事啊?
  7. 转:WCF基础知识问与答
  8. Socket API: setsockopt(), recvmsg(), sendmsg()函数
  9. BerryNet: Deep Learning Gateway on Raspberry Pi
  10. 开源GIS(十九)——WKT、WKB与GeoJSON