1

winforms アプリケーションでこれを行う方法を見つけるのはやや簡単ですが、XNA ではコード スニペットを意図したとおりに動作させることができません。また、システム ボタンをまったく無効にしたくありません。最大化ボタンと最小化ボタンが必要です。

x他のボタンを無効にせずに、XNA ゲーム フォームの閉じるボタン ( ) を無効にするにはどうすればよいですか?

4

1 に答える 1

3

コードでこれを定義します

[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)));
}
于 2013-02-06T02:27:11.007 に答える