在处理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 (将#修改为@)