微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在处理windowproc消息的同时继续更新和呈现

如何解决在处理windowproc消息的同时继续更新和呈现

我创建了一个win32 C ++应用程序,该应用程序使用Direct2d在窗口中绘制内容。在如下所示的循环中,我调用渲染和更新,同时还查看所有消息。但是,只要我有WM_COMMANDWindowProc调用MessageBox()DiaLogBox(),我的update&render循环就不再执行,并且绘图窗口冻结。对于另一个循环结构是否有一个简单的解决方法,还是我需要进入一个未知的多线程世界?

    while (message.message != WM_QUIT)
    {
        if (PeekMessage(&message,NULL,PM_REMOVE))
            dispatchMessage(&message);
        else
        {
            Update();
            BeginDraw();
            Render();
            EndDraw();
        }
    }

编辑:由于普遍的需求,我已经将“丑陋”的机制改变为另一种方法,但存在相同的问题

bool runGame = true;
while (runGame)
{
    while (PeekMessage(&message,PM_REMOVE))
    {
        dispatchMessage(&message);

        if (message.message == WM_QUIT)
            runGame = false;
    }
    
    Update();
    BeginDraw();
    Render();
    EndDraw();
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。