从非线程阻止消息框中获取结果?

时间:2012-06-18 22:27:26

标签: c++ user-interface

通常,消息框的工作方式如下:

if(ShowMessageBox("Title","Text",MB_YES_NO) == MB_YES)
{
   //the user responded yes
}

然而,我正在制作一个我制作gui系统的游戏,当显示消息框时,仍然会在后台发生动画,所以我不能简单地阻止线程,动画会停止。

现在,它的工作方式是显示消息框,必须提供IMessageHandler *并使用对话框结果调用它。

我想知道我是否忽略了什么。有没有更好的方法来做到这一点,可能更像是通常做的更多。其他游戏如何接近它呢?

由于

1 个答案:

答案 0 :(得分:0)

有多种选择,例如......

  1. 创建一个消息框读取的View-Model类(标题,消息,按钮文本)并写入(关闭前的结果),在显示之前将VM传递到消息框,然后读取结果关闭后来自VM。

    (更好的方法是使用命令模式或在消息框上放置事件,而不是将VM传递到消息框,然后在命令/事件处理程序更新VM中)。

  2. 使用命令模式或事件将结果从消息框(关闭之前)直接传递给调用者(或查看模型)。

  3. 使用show dialog style call to message box(blocking),但是,在单独的线程上执行此操作,然后将结果写入主线程可以读取的位置。