При попытке отобразить простой 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;
}
Возвращаемое значение для MessageBox
равно IDOK
, что должно означатьЯ нажал кнопку ОК, хотя это не так.GetLastError также не возвращает никаких ошибок.
Кроме того, это происходит только в том случае, если я выбрасываю исключение после инициализации моего окна.Класс Window можно найти здесь: https://github.com/SlidyBat/BatEngine/blob/master/Engine/Window.cpp
После просмотра этой проблемы в Интернете я нашел такой ответ: https://stackoverflow.com/a/41171505/9094644
Достаточно точно, если я очищу очередь сообщений перед отображением сообщениякоробка ( вот так ) работает.Сообщения, которые находятся в очереди при очистке, - это WM_QUIT, WM_TIMER и сообщение с идентификатором 1847 (не уверен, что это такое).
Пока я просто очищаю очередь сообщений перед отображением окна сообщениячтобы убедиться, что это работает, но было бы неплохо выяснить, что именно я делаю неправильно, чтобы вызвать это.
Спасибо.