【发布时间】:2013-01-21 03:04:08
【问题描述】:
在 winforms 应用程序中找到一种方法来执行此操作有些容易,但在 XNA 中,我无法使代码 sn-ps 按预期工作。我也不想禁用系统按钮,我仍然需要最大化和最小化按钮。
如何在不禁用其他按钮的情况下禁用 XNA 游戏窗体上的关闭按钮 (x)?
【问题讨论】:
在 winforms 应用程序中找到一种方法来执行此操作有些容易,但在 XNA 中,我无法使代码 sn-ps 按预期工作。我也不想禁用系统按钮,我仍然需要最大化和最小化按钮。
如何在不禁用其他按钮的情况下禁用 XNA 游戏窗体上的关闭按钮 (x)?
【问题讨论】:
在你的代码中定义这个
[DllImport("user32.dll")]
static extern bool EnableMenuItem(IntPtr hMenu, uint uIDEnableItem, uint uEnable);
[DllImport("user32.dll")]
static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
internal const UInt32 SC_CLOSE = 0xF060;
internal const UInt32 MF_ENABLED = 0x00000000;
internal const UInt32 MF_GRAYED = 0x00000001;
internal const UInt32 MF_DISABLED = 0x00000002;
internal const uint MF_BYCOMMAND = 0x00000000;
然后使用此功能禁用或启用关闭按钮
public void EnableOrDisableCloseButton(bool Enabled)
{
IntPtr hSystemMenu = GetSystemMenu(this.Window.Handle, false);
EnableMenuItem(hSystemMenu, SC_CLOSE, (uint)(MF_ENABLED | (Enabled ? MF_ENABLED : MF_GRAYED)));
}
【讨论】: