一个自定义消息引发的血案
来源:互联网 发布:网络的坏处英语作文 编辑:程序博客网 时间:2024/05/18 02:45
在项目中我们经常会使用自定义消息,有时候只是为了触发一个事件而已,所以很多时候我们比较懒,在接受消息的时候采用void getEvent(),然后做消息映射,但是这个失误导致了我半天的工作量!下面说下具体经过
环境:VC6 + UNICODE + XPSP3
在发送消息的地方定义了一个消息,然后SendMessage(WM_MESS,NULL,NULL),在接受的地方,定义一个函数用来响应消息void GetMess(),然后在CPP文件中添加消息映射,ON_MESSAGE(WM_MESS, GetMess),这样在DEBUG模式下没有错误,但是在Release模式下,只要触发了该事件,return后直接异常,异常的地方在MFC42U.DLL中,使用windebug,看到的消息是mfc42u.dll中有符号不能导出,开始以为是调试版本和发行版本的DLL库不一样导致,于是在网上找了一大堆的DLL库回来测试,发觉所有都有这个问题,后来经过分析,觉得可能是这个自定义消息的问题,于是修改代码为
LRESULT GetMess(UINT wParam, LONG lParam);
再编译,问题解决!
原因:在VC6中如果返回类型为void 的会破坏栈。
PS:在VC6以后版本中自定义消息的返回类型必须为LRESULT,否则编译不过.如果不需要返回值和参数可以使用ON_MESSAGE_VOID这个宏
- 一个自定义消息引发的血案
- 一个 * 引发的血案
- 一个“-”引发的血案
- 一个"/"引发的血案
- 消息参数引发的血案
- 一个松果引发的血案
- 一个memset引发的血案
- 一个包子引发的血案?
- 一个斜杠引发的血案
- 一个逗号引发的"血案"
- 一个static 引发的“血案”
- 一个分号引发的血案
- 一个key引发的血案
- 一个变量引发的血案
- 一个return引发的血案
- 一个ViewSwitcher引发的血案!
- 一个分号引发的“血案”
- 一个static引发的血案
- OpenSSL安装以及升级
- Android adb常用命令
- ARM Linux下添加自定义系统调用
- SQL Server 2008 R2 CU7已经发布, 修复了在VS 2010 sp1后SSMS智能提示失效的bug
- 王甲佳:云计算必须正面思考的四个问题
- 一个自定义消息引发的血案
- 标准c的io操作
- Nginx服务器工作状态ngx_http_stub_status_module 模块
- 强类型DataSet几点注意事项
- 多线程实例2
- 等差数列中非齐次等比函数项的消除
- Android下使用Socket连接网络电脑
- ShellExecute的强大功能
- 专注于移动互联网的深度技术交流社区