(xna c#)我希望能够在我的游戏中捕获任何关闭窗口事件,这样我就可以生成“你确定吗?”消息,以便用户可以阻止游戏终止。我如何陷入适当的事件,我如何阻止游戏结束?这仅适用于Windows。 我已经尝试了很多方法,包括EndRun()但是他们似乎都太晚了,无法做任何关于结束游戏的事情。即窗户已经关闭,没有办法离开出口。
答案 0 :(得分:4)
非常感谢你的帮助。我只是在这里回答,因为我现在不知道如何在评论中添加代码。我解决了以下问题;
此代码获取表单并允许我设置结束事件;
Form MyGameForm = (Form)Form.FromHandle(Window.Handle);
MyGameForm.Closing += ClosingFunction;
我的ClosingFunction看起来像这样;
public void ClosingFunction (object sender, System.ComponentModel.CancelEventArgs e)
{
if (MyMsgBox.Show("Are you sure you want to exit withou saving?", "Exit") == false)
{
e.Cancel = true; // Cancel the closing event
return;
}
}
为了使用此代码,您需要为项目添加.NET Systems.Windows.Forms引用
答案 1 :(得分:1)
在C#中,您可以覆盖WndProc
以在Windows消息到达您的应用程序之前捕获它们。在此处,我在关闭表单之前覆盖WM_CLOSE
消息以显示messagebox
。
protected override void WndProc(ref Message m) {
if (m.Msg == 0x10) {
if (MessageBox.Show("Do you really want to exit?", "Exit Game", MessageBoxButtons.YesNo) == DialogResult.No)
return;
}
base.WndProc(ref m);
}
这不会关闭窗口,直到用户确认他想要。希望这有帮助!