C# 大于屏幕的窗体

1.使用SetWindowPos就可以做到这一点,只是最后一个参数要选对。

RECT windowRect = new RECT();
User32.GetWindowRect(MyForm2.Handle, ref windowRect);
User32.SetWindowPos(MyForm2.Handle, 0, 0, 0, 5000, 500, ApiConstants.SWP_NOSENDCHANGING);

2.虽然设置完后窗体的大小改变了,但如果窗体的一旦重绘又会被屏幕大小限制而缩小。所以看下面的代码:

protected override void WndProc(ref Message m)
        {
            const int WM_GETMINMAXINFO = 0x24;
            if (m.Msg == WM_GETMINMAXINFO)
            {
                MINMAXINFO mmi = (MINMAXINFO)m.GetLParam(typeof(MINMAXINFO));
                mmi.ptMinTrackSize.x = this.Size.Width;
                mmi.ptMinTrackSize.y = this.Size.Height;
                Marshal.StructureToPtr(mmi, m.LParam, true);
            }
            base.WndProc(ref m);
        }
[StructLayout(LayoutKind.Sequential)]
    public struct RECT
    {
        public int left;
        public int top;
        public int right;
        public int bottom;
    }

    public struct POINTAPI 
    { 
        public int x; 
        public int y;        
    }

    public struct MINMAXINFO 
    { 
        public POINTAPI ptReserved; 
        public POINTAPI ptMaxSize; 
        public POINTAPI ptMaxPosition; 
        public POINTAPI ptMinTrackSize; 
        public POINTAPI ptMaxTrackSize;        
    }
View Code

以上代码在VS2010+Windows7Ultimate下调试通过,运行达到效果。

  

转载于:https://www.cnblogs.com/nanfei/p/3200159.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值