.NET 中 对窗口中某一控件全屏显示的方法二则

来源:互联网 发布:osi参考模型吧网络分为 编辑:程序博客网 时间:2024/05/13 04:20

示例一:

        采用API的形式调用,同时将API的调用封装成一个库,废话不说,直接上代码:

using System;using System.Collections.Generic;using System.Text;using System.Runtime.InteropServices;using System.Windows.Forms;namespace FullScreenActiveX{    public class FullScreenHelper    {        bool m_bFullScreen = false;        IntPtr m_OldWndParent = IntPtr.Zero;        WINDOWPLACEMENT m_OldWndPlacement = new WINDOWPLACEMENT();        Control m_control = null;        public FullScreenHelper(Control c)        {            m_control = c;        }        [DllImport("User32.dll")]        static extern bool LockWindowUpdate(IntPtr hWndLock);        struct POINT        {            int x;            int y;        } ;        struct RECT        {            public int left;            public int top;            public int right;            public int bottom;        } ;        [DllImport("User32.dll")]        static extern bool SetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);        [DllImport("User32.dll")]        static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);        [DllImport("User32.dll")]        static extern bool SetForegroundWindow(IntPtr hWnd);        [DllImport("User32.dll")]        static extern IntPtr GetDesktopWindow();        [DllImport("User32.dll")]        static extern bool GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);        [DllImport("User32.dll")]        static extern int GetSystemMetrics(int nIndex);        public void FullScreen()        {            if (m_bFullScreen)            {                LockWindowUpdate(m_control.Handle);                SetParent(m_control.Handle, m_OldWndParent);                SetWindowPlacement(m_control.Handle, ref m_OldWndPlacement);                SetForegroundWindow(m_OldWndParent);                LockWindowUpdate(IntPtr.Zero);            }            else            {                GetWindowPlacement(m_control.Handle, ref m_OldWndPlacement);                int nScreenWidth = GetSystemMetrics(0);                int nScreenHeight = GetSystemMetrics(1);                m_OldWndParent = m_control.Parent.Handle;                SetParent(m_control.Handle, GetDesktopWindow());                WINDOWPLACEMENT wp1 = new WINDOWPLACEMENT();                wp1.length = (uint)Marshal.SizeOf(wp1);                wp1.showCmd = 1;                wp1.rcNormalPosition.left = 0;                wp1.rcNormalPosition.top = 0;                wp1.rcNormalPosition.right = nScreenWidth;                wp1.rcNormalPosition.bottom = nScreenHeight;                SetWindowPlacement(m_control.Handle, ref wp1);                SetForegroundWindow(GetDesktopWindow());                SetForegroundWindow(m_control.Handle);            }            m_bFullScreen = !m_bFullScreen;        }        struct WINDOWPLACEMENT        {            public uint length;            public uint flags;            public uint showCmd;            public POINT ptMinPosition;            public POINT ptMaxPosition;            public RECT rcNormalPosition;        } ;    }}

示例二,根据C#中的类,查看系统中有几个显示器,然后,将控件的大小和定位设置到相应的尺寸,该功能可以满足多显示器下的使用


private void FillScreenDisplay(Control control, bool fill){if(fill){control.Dock = DockStyle.None;control.Left = 0;control.Top = 0;control.Width = Screen.PrimaryScreen.Bounds.Width;control.Height = Screen.PrimaryScreen.Bounds.Height;SetParent(this[pos].Handle,IntPtr.Zero);base.Parent.Hide();}else{SetParent(control,this.Handle);base.Parent.Show();}}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 唐筛年龄高风险怎么办 21三体综合症高风险怎么办 朋友深陷李强365怎么办 飞机上烟瘾犯了怎么办 怀孕一个月吸烟了怎么办 烟瘾犯了没烟怎么办 押金交了不租了怎么办 买车首付款不够怎么办 双11订金不退怎么办 在商场买到假货怎么办 网上买到假手机怎么办 网上买了假手机怎么办 网银转账被骗了怎么办 支付宝被骗了钱怎么办 被支付宝骗了钱怎么办 头发出油怎么办小妙招 照相的时候脸歪怎么办 怀孕两个月同床了怎么办 小姐被警察抓了怎么办 我的世界迷路了怎么办 砸到手指甲很痛怎么办 手被锤子砸肿了怎么办 拇指突然疼肿了怎么办 手指甲压紫了痛怎么办 砸到手指头肿了怎么办 小婴儿体重不长怎么办 2岁半宝宝不说话怎么办 米兰叶子掉光了怎么办 qq雷霆战机闪退怎么办 微信限额20万怎么办 欧拉方程x<0怎么办 柿子核吃下去了怎么办 橡胶底白色变黄怎么办 20了丁丁还很小怎么办 5角硬币吞进肚子怎么办 孩子吞了5角硬币怎么办 左腿比右腿微粗怎么办 一个腿长一个腿短怎么办 刚买的毛笔很硬怎么办 我哥哥太爱我了怎么办 如果婚姻无法维持该怎么办