为什么MessageBox会无声地失败?

Tim*_*ell 2 c++ windows winapi

有谁知道MessageBox(...)如何无声地失败?

MessageBox(g_hMainhWnd, buffer, "Oops!", MB_OK | MB_ICONERROR);

ShellExecute(0, "open", "http://intranet/crash_handler.php", NULL, "", SW_SHOWNORMAL);
Run Code Online (Sandbox Code Playgroud)

对于一个小上下文,此代码在我们自己的异常处理程序中调用,该处理程序使用SetUnhandledExceptionFilter()注册

大多数时候,我看到消息框,然后启动Web浏览器.

但是,我有一个exe,据我所知,使用这个确切的代码,它成功启动了Web浏览器,但我没有先看到消息框.

谢谢

蒂姆


破了.我试图故意传入垃圾HWND并且没有出现消息框.

谢谢Brian!

Bri*_*ndy 5

只是一个想法但可能g_hMainhWnd无效?当您NULL输入第一个参数时,查看它是否有效.

我建议在调用GetLastError后调用并将输出写入文件.这样你就可以看到Windows认为错误是什么.在MSDN MessageBox的文档中提到它设置GetLastError为这个API,如果失败则返回零.