今天这个问题把我困扰死了

debug模式(VC6.0)下没有任何错误, 但是在release模式下就会出错了, 而且执行第一次功能时没问题,执行第二次才会出错!!!

具体情况是这样的, dll给主程序发了一个自定义消息, 主程序接收消息进行处理, 中间有很多细节的代码都被我排除了干系. 不过, 我在release模式下设了断点调试(这个是可行的,具体请Google), 发消息和消息响应函数都走遍了, 就是不出错. 然后按F5继续执行, 就出错了, 定位不到源代码, 汇编看不懂, 囧

幸亏网上搜到了解决办法, 最终发现是我偷懒, 由于发消息WPARAM, LPARAM 的值都是0, 所以响应函数的参数列表就空着没写了. 发生错误的原因, 网上的说法是: wparam和lparam参数没有写,函数在退栈时, 把栈破坏了

所以, 以后不要偷懒了, 响应自定义消息的函数的标准形式是: LRESULT OnXXXX(WPARAM wParam, LPARAM lParam)

不过在VC.NET上, 响应函数的参数为空, 返回值为void编译时就会报错了, 这VC6也真是的, 居然不报错, 运行时出错!!!