博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
error C2440 “static_cast” 无法从“void (__thiscall CPppView )(void)...
阅读量:2397 次
发布时间:2019-05-10

本文共 905 字,大约阅读时间需要 3 分钟。

不能转换void (_thiscall CMainFrame::*)(void)to LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)2010-05-13 11:35开发平台由VC6.0升级至VS2005,需要将原有的项目迁移,可能碰到类似错误:
error C2440: 'static_cast' : cannot convert from 'void (__thiscall CMainFrame::* )(void)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'  

VS2005对消息的检查更为严格,以前在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)

转载地址:http://mwyob.baihongyu.com/

你可能感兴趣的文章
Docker概述
查看>>
Docker--基本组成
查看>>
数据结构--循环双链表实现、详解
查看>>
数据结构--优先队列实现、模拟线程调度
查看>>
Java并发--Java中的13个原子操作类详解
查看>>
Java并发--同步锁Lock
查看>>
Java并发--数据依赖性、as-if-aerial、程序顺序规则、重排序对多线程的影响
查看>>
Java并发--并发编程模型、内存屏障
查看>>
Java并发--volatile内存语义的实现
查看>>
Java并发--happens-before详解
查看>>
Docker--配置ActiveMQ
查看>>
数据结构--数组、使用数组表示矩阵
查看>>
数据结构--稀疏矩阵常用的三种压缩存储(顺序、行单链表、十字链表)
查看>>
Java并发--监视器(monitor)、等待/通知机制
查看>>
Zookeeper--数据初始化过程
查看>>
Zookeeper--数据同步
查看>>
Zookeeper--配置详解
查看>>
Swagger2注解详细说明
查看>>
使用Turbine聚合监控
查看>>
Zuul案例、常见使用方式
查看>>