zoukankan      html  css  js  c++  java
  • winfrom实现控件全屏效果

    用常规方法实现全屏显示时,由于采用的三方控件导致界面顶端一直有一条半透明的类似标题栏的东西无法去除,原因一直没找到。

    下面综合整理下网上两位博主的用WindowsAPI实现全屏的方法:

    控件全屏显示: http://www.cnblogs.com/lmcblog/archive/2012/07/14/2591501.html

    任务栏、开始菜单栏显示隐藏:http://www.cnblogs.com/ITBread/p/3503801.html

    我把代码整理下,方便下次自己查看

    1、任务栏、菜单栏的显示与隐藏

     [DllImport("user32.dll")]
            public static extern bool GetCursorPos(ref Point lpPoint);
    
            [DllImport("user32.dll", EntryPoint = "FindWindowEx", SetLastError = true)]
            public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
    
            [DllImport("user32.dll", EntryPoint = "ShowWindow", SetLastError = true)]
            public static extern bool ShowWindow(IntPtr hWnd, uint nCmdShow);
    
            public static Point GetCursorPos()
            {
                Point point = new Point();
                GetCursorPos(ref point);
                return point;
            }
    
            public static void HideTask(bool isHide)
            {
                try
                {
                    IntPtr trayHwnd = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "Shell_TrayWnd", null);
                    IntPtr hStar = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "Button", null);
    
                    if (isHide)
                    {
                        ShowWindow(trayHwnd, 0);
                        ShowWindow(hStar, 0);
                    }
                    else
                    {
                        ShowWindow(trayHwnd, 1);
                        ShowWindow(hStar, 1);
                    }
                }
                catch { }
            }

    2、控件的全屏与取消

    { 
               WindowFullScreenApi.HideTask(true);//先隐藏工具栏
                var axTeWnd = axTe3DWindow;
                axTeWnd.Dock = DockStyle.None;
                axTeWnd.Left = 0;
                axTeWnd.Top = 0;
                axTeWnd.Width = Screen.PrimaryScreen.Bounds.Width;//获取显示器大小
                axTeWnd.Height = Screen.PrimaryScreen.Bounds.Height;
                WindowFullScreenApi.SetParent(axTeWnd.Handle, IntPtr.Zero);
               
               
                axTe3DWindow.Focus(); //axTeDWindow是我需要全屏的窗体控件
                Application3D.CurrentSystemState.onKeyboardMessage = OnKeyDown;
    }
            
    //按下Wsc键取消全屏
     private void OnKeyDown(object sender, _ITE3DWindowEvents_OnKeyboardMessageEvent e)
            {          
                if (e.keyCode == 27)
                {
                    //SenceContrl.NormalForm();
                    WindowFullScreenApi.SetParent(axTe3DWindow.Handle, axTe3DWindow.Parent.Handle);
                    axTe3DWindow.OnKeyboardMessage -= OnKeyDown;
                    axTe3DWindow.Dock = DockStyle.Fill;
                    WindowFullScreenApi.HideTask(false);
                }
            }   


     

  • 相关阅读:
    js中的replace替换全部
    Oracle中创建数据链
    Hbuildx+vue+axios+element ui初学部署
    html5抠图
    Oracle误删除数据的恢复方法
    vs 生成项目自动关闭当前运行程序
    Mvc项目在iis上面显示文件夹 输入地址页面也打不开
    FastReport快速打印(.net)
    脚本之家
    VS自定义作者、创建时间
  • 原文地址:https://www.cnblogs.com/pengdage110/p/7081887.html
Copyright © 2011-2022 走看看