zoukankan      html  css  js  c++  java
  • [转]C#改变无边框窗体大小

           #region 改变窗体大小
            const int WM_NCHITTEST = 0x0084;
            const int HTLEFT = 10;    //左边界
            const int HTRIGHT = 11;   //右边界
            const int HTTOP = 12; //上边界
            const int HTTOPLEFT = 13; //左上角
            const int HTTOPRIGHT = 14;    //右上角
            const int HTBOTTOM = 15;  //下边界
            const int HTBOTTOMLEFT = 0x10;    //左下角
            const int HTBOTTOMRIGHT = 17; //右下角
    
            protected override void WndProc(ref Message m)
            {
                base.WndProc(ref m);
                switch (m.Msg)
                {
                    case WM_NCHITTEST:
                    {
                        Point vPoint = new Point((int)m.LParam & 0xFFFF,(int)m.LParam >> 16 & 0xFFFF);
                        vPoint = PointToClient(vPoint);
                        //判断:仅当当前窗体状态不是最大化时,相关鼠标事件生效
                        if (this.WindowState != FormWindowState.Maximized)
                        {
                            if (vPoint.X < 10)
                            {
                                if (vPoint.Y < 10)
                                {
                                    m.Result = (IntPtr)HTTOPLEFT;
                                }
                                else if (vPoint.Y > this.Height - 10)
                                {
                                    m.Result = (IntPtr)HTBOTTOMLEFT;
                                }
                                else
                                {
                                    m.Result = (IntPtr)HTLEFT;
                                }
                            }
                            else if (vPoint.X > this.Width - 10)
                            {
                                if (vPoint.Y < 10)
                                {
                                    m.Result = (IntPtr)HTTOPRIGHT;
                                }
                                else if (vPoint.Y > this.Height - 10)
                                {
                                    m.Result = (IntPtr)HTBOTTOMRIGHT;
                                }
                                else
                                {
                                    m.Result = (IntPtr)HTRIGHT;
                                }
                            }
                            else if (10 < vPoint.X && vPoint.X < this.Width - 10)
                            {
                                if (vPoint.Y < 10)
                                {
                                    m.Result = (IntPtr)HTTOP;
                                }
                                else if (vPoint.Y > this.Height - 10)
                                {
                                    m.Result = (IntPtr)HTBOTTOM;
                                }
                            }
                        }
                        break;
                    }
                }
            }
            #endregion
    
    将窗体的Padding中将所有的值,均设为1即可(或更大,只要不为0就行。当然,数值越大,也意味着窗体四周的“露白”越多,同时,在调整大小时,也会越容易被鼠标“捕捉”到。一般来说,窗体的左、右边框容易被捕捉

    转自:http://www.beijibear.com/article/10-09/cheongyuhin5.html

  • 相关阅读:
    ThinkPHP-5.0.23新的RCE漏洞测试和POC
    利用DNS日志进行MySQL盲注
    Prometheus自动发现
    relabel_config
    Maven安装
    Redis安装
    Node.js安装
    MySQL-5.7安装
    设计模式【1】------>单例模式
    Java设计模式概念以及六大设计原则
  • 原文地址:https://www.cnblogs.com/qq1223558/p/3229338.html
Copyright © 2011-2022 走看看