簡體   English   中英

xna c#陷阱並取消關閉窗口(x)按鈕和Ctrl F4

[英]xna c# trap and cancel the close window (x) button and Ctrl F4

(xna c#)我希望能夠捕獲游戲中的任何關閉窗口事件,以便生成“您確定嗎?” 消息,以便用戶可以阻止游戲終止。 我如何捕獲適當的事件以及如何防止游戲結束? 這僅適用於Windows。 我已經嘗試了許多方法,包括EndRun(),但它們似乎為時已晚,無法對結束游戲采取任何措施。 即,該窗口已經關閉,無法退出。

非常感謝您的幫助。 我只在這里回答,因為我現在不知道如何在注釋中添加代碼。 我解決了以下問題;

此代碼獲取表格,並允許我設置關閉事件;

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引用。

在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);
}

直到用戶確認要關閉該窗口。 希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM