我使用P/Invoke调用GetSystemMenu和EnableMenuItem(win32api)来禁用关闭功能.但是,在最小化或最大化我的Windows窗体应用程序后,将重新启用该按钮.
显然,最小化或最大化会导致行为,但如何?我不知道在哪里可以防止这种行为.
我应该阻止最大化和最小化行为,还是IP /调用呼叫的方式有什么特别的错误?加载应用程序(主窗体)后,我会通过单击按钮调用静态方法.
class PInvoke
{
// P/Invoke signatures
[DllImport("user32.dll")]
static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
[DllImport("user32.dll")]
static extern bool EnableMenuItem(IntPtr hMenu, uint uIDEnableItem, uint uEnable);
// SysCommand (WM_SYSCOMMAND) constant
internal const UInt32 SC_CLOSE = 0xF060;
// Constants used with Add/Check/EnableMenuItem
internal const UInt32 MF_BYCOMMAND = 0x00000000;
internal const UInt32 MF_ENABLED = 0x00000000;
internal const UInt32 MF_GRAYED = 0x00000001;
internal const UInt32 MF_DISABLED = 0x00000002;
/// <summary>
/// Sets the state of the Close (X) button and the …Run Code Online (Sandbox Code Playgroud)