通常,消息框的工作方式如下:
if(ShowMessageBox("Title","Text",MB_YES_NO) == MB_YES)
{
//the user responded yes
}
然而,我正在制作一个我制作gui系统的游戏,当显示消息框时,仍然会在后台发生动画,所以我不能简单地阻止线程,动画会停止。
现在,它的工作方式是显示消息框,必须提供IMessageHandler *并使用对话框结果调用它。
我想知道我是否忽略了什么。有没有更好的方法来做到这一点,可能更像是通常做的更多。其他游戏如何接近它呢?
由于
答案 0 :(得分:0)
有多种选择,例如......
创建一个消息框读取的View-Model类(标题,消息,按钮文本)并写入(关闭前的结果),在显示之前将VM传递到消息框,然后读取结果关闭后来自VM。
(更好的方法是使用命令模式或在消息框上放置事件,而不是将VM传递到消息框,然后在命令/事件处理程序更新VM中)。
使用命令模式或事件将结果从消息框(关闭之前)直接传递给调用者(或查看模型)。
使用show dialog style call to message box(blocking),但是,在单独的线程上执行此操作,然后将结果写入主线程可以读取的位置。