当试图显示一个简单的MessageBox时,它根本不显示.
码:
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int nCmdShow )
{
try
{
Window wnd( { 50, 50 }, Graphics::ScreenWidth, Graphics::ScreenHeight, "Bat Engine", Graphics::FullScreen );
throw std::exception( "test" );
}
catch( const std::exception& e )
{
MessageBox( NULL, e.what(), "Error", MB_ICONWARNING | MB_OK );
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
返回值MessageBox就是IDOK它的解释是:我点击确定按钮,即使事实并非如此.GetLastError也不会返回任何错误.
此外,只有在我初始化Window后抛出异常才会发生这种情况.Window类可以在这里找到:https://github.com/SlidyBat/BatEngine/blob/master/Engine/Window.cpp
在线查找此问题后,我找到了这个答案:https://stackoverflow.com/a/41171505/9094644
果然,如果我在显示消息框之前清除消息队列(就像这样),它就可以工作了.清除它时队列中的消息是WM_QUIT,WM_TIMER和ID为1847的消息(不确定那是什么).
现在我只是在显示消息框之前清除消息队列以确保它正常工作,但是很高兴找出我做错的原因.
谢谢.