小编Bra*_*ick的帖子

为什么最大化/最小化事件导致关闭按钮在禁用后重新启用?

我使用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)

.net c# forms pinvoke winapi

2
推荐指数
1
解决办法
1682
查看次数

标签 统计

.net ×1

c# ×1

forms ×1

pinvoke ×1

winapi ×1