Поиск по этому блогу

C# Windows Form FormBorderStyle = None Изменение размера формы

C# Windows Form FormBorderStyle = None Изменение размера формы
        public Form1()
        {
            InitializeComponent();
        }
        protected override void WndProc(ref Message m)
        {
            if (WindowState == FormWindowState.Normal)
            {
                switch (m.Msg)
                {
                    case 0x0084:    /*NCHITTEST*/
                        base.WndProc(ref m);
 
                        if ((int)m.Result == 0x01)  /*HTCLIENT*/
                        {
                            Point screenPoint = new Point(m.LParam.ToInt32());
                            Point clientPoint = this.PointToClient(screenPoint);
                            if (clientPoint.Y <= 10)
                            {
                                if (clientPoint.X <= 10)
                                    m.Result = (IntPtr)13;  /*HTTOPLEFT*/
                                else if (clientPoint.X < (Size.Width - 10))
                                    m.Result = (IntPtr)12;  /*HTTOP*/
                                else
                                    m.Result = (IntPtr)14;  /*HTTOPRIGHT*/
                            }
                            else if (clientPoint.Y <= (Size.Height - 10))
                            {
                                if (clientPoint.X <= 10)
                                    m.Result = (IntPtr)10;  /*HTLEFT*/
                                else if (clientPoint.X < (Size.Width - 10))
                                    m.Result = (IntPtr)1;   /*HTCAPTION*/ 
                                else
                                    m.Result = (IntPtr)11;  /*HTRIGHT*/
                            }
                            else
                            {
                                if (clientPoint.X <= 10)
                                    m.Result = (IntPtr)16;  /*HTBOTTOMLEFT*/
                                else if (clientPoint.X < (Size.Width - 10))
                                    m.Result = (IntPtr)15;  /*HTBOTTOM*/
                                else
                                    m.Result = (IntPtr)17;  /*HTBOTTOMRIGHT*/
                            }
                    }
                    return;
                }
            }
            base.WndProc(ref m);
        }