0

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

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

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

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

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

谢谢

4

1 回答 1

0

有多种选择,例如..

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

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

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

  3. 使用显示对话框样式调用消息框(阻塞),但是,在单独的线程上执行此操作,然后将结果写入主线程可以读取的位置。

于 2012-06-18T22:51:07.593 回答