zoukankan      html  css  js  c++  java
  • winform窗体全屏

    bool fullscreen = false;
    Rectangle rect = new Rectangle();
    private void button4_Click(object sender, EventArgs e)
    {
        fullscreen = !fullscreen;//循环。点一次全屏,再点还原。
        SetFullScreen(fullscreen, ref rect);
        if (fullscreen)
        {
            this.WindowState = FormWindowState.Maximized;//全屏
        }
        else
        {
            this.WindowState = FormWindowState.Normal;//还原
        }
    }

    /// <summary>
    /// 设置全屏或这取消全屏
    /// </summary>
    /// <param name="fullscreen">true:全屏 false:恢复</param>
    /// <param name="rectOld">设置的时候,此参数返回原始尺寸,恢复时用此参数设置恢复</param>
    /// <returns>设置结果</returns>
    public static bool SetFullScreen(bool fullscreen, ref Rectangle rectOld)
    {
        int Hwnd = 0;
        Hwnd = FindWindow("Shell_TrayWnd", null);
        if (Hwnd == 0) return false;
        if (fullscreen)
        {
            ShowWindow(Hwnd, SW_HIDE);
            Rectangle rectFull = Screen.PrimaryScreen.Bounds;
            SystemParametersInfo(SPI_GETWORKAREA, 0, ref rectOld, SPIF_UPDATEINIFILE);//get
            SystemParametersInfo(SPI_SETWORKAREA, 0, ref rectFull, SPIF_UPDATEINIFILE);//set
        }
        else
        {
            ShowWindow(Hwnd, SW_SHOW);
            SystemParametersInfo(SPI_SETWORKAREA, 0, ref rectOld, SPIF_UPDATEINIFILE);
        }
        return true;
    }

    [DllImport("user32.dll", EntryPoint = "ShowWindow")]
    public static extern int ShowWindow(int hwnd, int nCmdShow);
    public const int SW_SHOW = 5; public const int SW_HIDE = 0;

    [DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
    private static extern int SystemParametersInfo(int uAction, int uParam, ref Rectangle lpvParam, int fuWinIni);
    public const int SPIF_UPDATEINIFILE = 0x1;
    public const int SPI_SETWORKAREA = 47;
    public const int SPI_GETWORKAREA = 48;

    [DllImport("user32.dll", EntryPoint = "FindWindow")]
    private static extern int FindWindow(string lpClassName, string lpWindowName);

    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    class WindowsFullScreenApi
        {
            [DllImport("user32.dll", EntryPoint = "GetSystemMetrics")]
            public static extern int GetSystemMetrics(int which);
     
            [DllImport("user32.dll")]
            public static extern void
                SetWindowPos(IntPtr hwnd, IntPtr hwndInsertAfter,
                             int X, int Y, int width, int height, uint flags);
     
            private const int SM_CXSCREEN = 0;
            private const int SM_CYSCREEN = 1;
            private static IntPtr HWND_TOP = IntPtr.Zero;
            private const int SWP_SHOWWINDOW = 64; // 0x0040
     
            public static int ScreenX
            {
                get { return GetSystemMetrics(SM_CXSCREEN); }
            }
     
            public static int ScreenY
            {
                get { return GetSystemMetrics(SM_CYSCREEN); }
            }
     
            public static void SetWinFullScreen(IntPtr hwnd)
            {
                SetWindowPos(hwnd, HWND_TOP, 0, 0, ScreenX, ScreenY, SWP_SHOWWINDOW);
            }
        }

    调用::全屏

    FormBorderStyle = FormBorderStyle.None;
                    WindowState = FormWindowState.Maximized;
                    WindowsFullScreenApi.SetWinFullScreen(Handle);

    调用::恢复

    FormBorderStyle = FormBorderStyle.Sizable;
                    WindowState = FormWindowState.Maximized;//自己控制恢复后是什么状态

  • 相关阅读:
    万网免费主机wordpress快速建站教程-域名绑定及备案
    java小算法—大衍数列
    Core Data使用之一(Swift): 保存
    Swift 添加到TableView实现动画效果
    Swift 动态创建提示框
    Swift分割字符串
    Swift去除两边的特定字符(空格或其它)
    windows 属性
    String 输出{}
    c# 正则表达式的用户
  • 原文地址:https://www.cnblogs.com/furenjian/p/3272912.html
Copyright © 2011-2022 走看看