(xna c#)我想能够在我的游戏中捕捉任何关闭窗口事件,所以我可以生成一个“你确定?消息,以便用户可以防止游戏终止。我如何捕获适当的事件,以及如何防止游戏结束?这仅适用于Windows。 我已经尝试了许多已经包括EndRun()的方法,但它们似乎都为时过晚无法做任何关于结束游戏的方法。即窗户已经关闭,无法绕过出口。xna c#陷阱并取消关闭窗口(x)按钮和Ctrl F4
0
A
回答
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);
}
这不会关闭窗口,直到用户确认他想要。希望这可以帮助!
2
非常感谢您的帮助。我只是在这里回答,因为我现在不知道如何在评论中添加代码。我解决了这个问题如下:
此代码获取表单并允许我设置关闭事件;
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;
}
}
为了使用此代码,你需要给你的项目
相关问题
- 1. 陷阱窗口关闭
- 2. 陷阱窗口关闭事件
- 3. 用窗口'X'按钮关闭窗体
- 4. HTML按钮关闭窗口
- 5. 如何绑定到窗口的关闭按钮X按钮
- 6. 如何检测通过Alt + F4关闭的浏览器窗口或单击窗口的关闭按钮?
- 7. 关闭窗口按钮gtk_widget_set_sensitive按钮
- 8. BootstrapX弹出窗口和关闭按钮
- 9. JavaFX关闭窗口并通过“x”打开另一个标题栏中的按钮和窗口中的按钮
- 10. Perl陷阱Ctrl-C(sigint)在bash中
- 11. Control KeyDown事件陷阱CTRL-C等
- 12. 的Java:取消按钮不会关闭该窗口的JFrame
- 13. 如何通过单击“取消”按钮关闭窗口?
- 14. 取消javascript按钮时关闭弹出窗口。
- 15. 提交按钮打开新窗口并关闭父窗口?
- 16. 通过X按钮和onload窗口事件关闭弹出窗口
- 17. Silverlight关闭/取消按钮
- 18. 在asp.net C#中获取关闭窗口按钮(服务器端)
- 19. 如何修复IntelliJ Idea不按Ctrl + F4关闭标签?
- 20. 关闭firefox应用程序(alt + F4或关闭按钮)
- 21. 陷阱WM_SETFOCUS消息
- 22. 窗口中的陷阱游标
- 23. 修改highslide弹出窗口的“X”关闭按钮
- 24. 使用MVVM灯以'X'按钮关闭窗口时的确认
- 25. 在dojo对话框中缺少[X]按钮以关闭窗口
- 26. 如何知道窗口是否被“x”按钮关闭?
- 27. Errorprovider在使用窗口关闭按钮(X)时显示错误
- 28. 如何禁用Windows上的Perl/Tk窗口关闭('X')按钮
- 29. VSTO重新关闭窗口按钮
- 30. 窗口关闭按钮劫持雪豹
我碰到下面的错误,当我试图实现代码添加.NET Systems.Windows.Forms参考;错误'Microsoft.Xna.Framework.Game'不包含'WndProc'的定义 – blink
是否有可能获得窗口的句柄“hwnd”? – Blue0500
如果你能得到句柄,我会查看钩子(http://msdn.microsoft.com/en-us/library/windows/desktop/ms644959%28v=vs.85%29.aspx)来捕获消息。这(http://msdn.microsoft.com/en-us/magazine/cc188966.aspx)也可以帮助。 – Blue0500