昨天调试程序,发现程序在Debug与Release下的运行结果不一致,原因是,在Debug下,断言失败弹出消息框。
出现这个问题的时候,请教了一下我师傅(同事),他让我取消断言试试。后来查看了一下断言内的代码,发现在MessageBox处执行下一步时,程序会跑到其他的地方。查了写资料,结合程序的堆栈信息,确认MsgBox会使程序重新进入消息循环。
MSDN上MessageBox的说明貌似并没有提到这一点,也许会在其他文档中。
附上一个例子,用于验证。
#include <windows.h>
LONG CALLBACK msgProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
switch (msg)
{
case WM_CREATE:
//在MsgBox处打断点,然后再在switch处打断点,接着运行
MessageBox (NULL, L"Test", NULL, MB_OK);
return 0;
case WM_DESTROY:
PostQuitMes