我自定义了一个消息#define MyMessage WM_USER + 100然后定义了一个消息处理函数void DealWithMessage(); //这里有错程序在debug模式下运行时没有错误, 而在release模式下运行就出错了我把消息处理函数改成了LRESULT DealWithMessage(WPARAM wParam, LPARAM lParam); 就没有问题了.高手能不能给解释一下其中的区别? 为什么一定要声明成下面的形式?为什么只有在release模式下才出错?
解决方案 »
- http可以指定端口吗
- LSPlayer源码公开啦!!快下载啊!!
- 郁闷,MSDN的索引没了
- DXSHOW播放视频,无法显示播放窗口的问题,急~~~
- 哪位好心人有夜莺CMI8738 声卡驱程?请EMAIL给我一份,[email protected],谢谢。随便装了个CMI8738的驱程,有时不听不了音乐。
- 怎样获得文件对话框保存文件时的扩展名
- 请问在VC++中怎么连SQL SERVER 数据库呀?
- CImage图像旋转问题
- CSocket类中如何响应OnAccept OnReceive事件?
- gpu gem demo的编译性能问题
- 怪问题!同一个id的函数居然会有不同的反应!!
- 如何在word中判断某标签是否存在
一楼说的不对,与返回值没任何关系。 首先SendMessage/PostMessage函数,是有发送参数的。其次MFC映射消息一般都有参数,这点可以是直接或间接的实现的。再有在Debug/Release调用的MFC库是不一样的,前者是mfc42d.dll, 后者是mfc42.dll,debug会帮你处理很多错误,其错误信息会下调试窗口中输出,以示警告 ; 而Release是没有这么多处理的,严格按照函数调用约定。正如楼上所说,SendMessage/PostMessage发送消息是有参数的,MFC处理也带参数,而你的映射却没为参数分配空间,自然会崩溃. 你地,明白!
{
if(message == MyMessage )
{
DealWithMessage();
return TRUE;
}
....
}