• WPF窗体禁用最大化按钮


    禁用WPF窗体的最大化按钮可以使用Windows API改变按钮状态的方法实现。
    使用GetWindowLong可以得到当前按钮的状态。使用SetWindowLong可以设置按钮的状态。
    使用SetWindowPos进行界面的更新。
    下面是这几个API的声明。
            [DllImport("user32.dll", EntryPoint = "GetWindowLong")]
            public static extern int GetWindowLong(IntPtr hwnd, int nIndex);
            [DllImport("user32.dll", EntryPoint = "SetWindowLong")]
            public static extern int SetWindowLong(IntPtr hMenu, int nIndex, int dwNewLong);
            [DllImport("user32.dll")]
            private static extern int SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, int uFlags);

    进行禁用后必须进行界面的刷新,否则禁用状态不会立即显示在界面上。
            private void DisableMaxmizebox(bool isDisable)
            {
                int GWL_STYLE = -16;
                int WS_MAXIMIZEBOX = 0x00010000;
                int SWP_NOSIZE = 0x0001;
                int SWP_NOMOVE = 0x0002;
                int SWP_FRAMECHANGED = 0x0020;
                IntPtr handle = new WindowInteropHelper(this).Handle;
                int nStyle = GetWindowLong(handle, GWL_STYLE);
                if (isDisable)
                {
                    nStyle &= ~(WS_MAXIMIZEBOX);
                }
                else
                {
                    nStyle |= WS_MAXIMIZEBOX;
                }
                SetWindowLong(handle, GWL_STYLE, nStyle);
                SetWindowPos(handle, IntPtr.Zero, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_FRAMECHANGED);
            }

    这个函数可以通过参数确定是否禁用。

  • 相关阅读:
    一、业务场景-随机生成患者姓名
    十一、python的高级语法与用法
    全排列小结
    LeetCode——150. Evaluate Reverse Polish Notation
    斐波那契数列算法小结
    LeetCode——14. Longest Common Prefix
    LeetCode——13. Roman to Integer
    LeetCode——12. Integer to Roman
    LeetCode——11. Container With Most Water
    LeetCode——10. Regular Expression Matching
  • 原文地址:https://www.cnblogs.com/moonlight-zjb/p/3442304.html
Copyright © 2020-2023  润新知