小编Sli*_*idy的帖子

MessageBox未显示

当试图显示一个简单的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的消息(不确定那是什么).

现在我只是在显示消息框之前清除消息队列以确保它正常工作,但是很高兴找出我做错的原因.

谢谢.

c++ windows winapi

2
推荐指数
1
解决办法
206
查看次数

标签 统计

c++ ×1

winapi ×1

windows ×1