问题描述
我创建了一个win32 C ++应用程序,该应用程序使用Direct2d在窗口中绘制内容。在如下所示的循环中,我调用渲染和更新,同时还查看所有消息。但是,只要我有WM_COMMAND
让WindowProc
调用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 (将#修改为@)