• 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);
                }
            }   


     

  • 相关阅读:
    【Language】 TIOBE Programming Community Index for February 2013
    【diary】good health, good code
    【web】a little bug of cnblog
    【Git】git bush 常用命令
    【web】Baidu zone ,let the world know you
    【diary】help others ,help yourself ,coding is happiness
    【Git】Chinese messy code in widows git log
    【windows】add some font into computer
    SqlServer启动参数配置
    关于sqlserver中xml数据的操作
  • 原文地址:https://www.cnblogs.com/pengdage110/p/7081887.html
Copyright © 2020-2023  润新知