Example #1
0
        private void ResetWindowButtons()
        {
            bool bUpdate = false;

            if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Close))
            {
                if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].IsHover == true)
                {
                    MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].IsHover = false;
                    bUpdate = true;
                }
            }
            if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Maximize))
            {
                if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].IsHover == true)
                {
                    MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].IsHover = false;
                    bUpdate = true;
                }
            }
            if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Minimize))
            {
                if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].IsHover == true)
                {
                    MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].IsHover = false;
                    bUpdate = true;
                }
            }

            if (bUpdate)
            {
                UpdateDisplay();
            }
        }
Example #2
0
        protected virtual void DrawWindowButtons(Graphics g)
        {
            if (!MostraBarraTitolo)
            {
                return;
            }

            if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Close))
            {
                MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].Paint(g);
            }
            if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Maximize))
            {
                MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].Paint(g);
            }
            if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Minimize))
            {
                MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].Paint(g);
            }
        }
Example #3
0
        private bool NCMouseLButtonDown(ref Message m)
        {
            bool rv = true;

            switch (m.WParam.ToInt32())
            {
            case (int)WinApi.HitTest.HTNOWHERE:
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Close))
                {
                    MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].IsClick = false;
                }
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Minimize))
                {
                    MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].IsClick = false;
                }
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Maximize))
                {
                    MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].IsClick = false;
                }
                break;

            case (int)WinApi.HitTest.HTCLOSE:
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Close))
                {
                    MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].IsClick = true;
                }
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Minimize))
                {
                    MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].IsClick = false;
                }
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Maximize))
                {
                    MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].IsClick = false;
                }
                break;

            case (int)WinApi.HitTest.HTMAXBUTTON:
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Close))
                {
                    MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].IsClick = false;
                }
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Minimize))
                {
                    MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].IsClick = false;
                }
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Maximize))
                {
                    MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].IsClick = true;
                }
                break;

            case (int)WinApi.HitTest.HTMINBUTTON:
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Close))
                {
                    MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].IsClick = false;
                }
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Minimize))
                {
                    MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].IsClick = true;
                }
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Maximize))
                {
                    MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].IsClick = false;
                }
                break;

            default:
                rv = false;
                break;
            }

            UpdateDisplay();

            return(rv);
        }
Example #4
0
        private bool NCMouseLButtonUp(ref Message m)
        {
            bool rv = true;

            switch (m.WParam.ToInt32())
            {
            case (int)WinApi.HitTest.HTCLOSE:
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Close))
                {
                    if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].IsClick)
                    {
                        Close();
                    }
                }
                break;

            case (int)WinApi.HitTest.HTMAXBUTTON:
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Maximize))
                {
                    if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].IsClick)
                    {
                        if (WindowState == FormWindowState.Normal)
                        {
                            if (_metroShadowForm != null && _metroShadowForm.Visible)
                            {
                                _metroShadowForm.Visible = false;
                            }

                            _bIsMaximizing = true;
                            WinApi.SendMessage(this.Handle, (int)WinApi.Messages.WM_SYSCOMMAND, (int)WinApi.Messages.SC_MAXIMIZE, 0);
                        }
                        else if (WindowState == FormWindowState.Maximized)
                        {
                            if (_metroShadowForm != null && ShowShadowForm && MostraBordo)
                            {
                                _metroShadowForm.Visible = true;
                            }

                            _bIsMaximizing = false;
                            WinApi.SendMessage(this.Handle, (int)WinApi.Messages.WM_SYSCOMMAND, (int)WinApi.Messages.SC_RESTORE, 0);
                        }

                        MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].MetroWindowButtonType = MetroWindowButton.TipoMetroWindowButton.Maximize;

                        UpdateDisplay();
                    }
                }
                break;

            case (int)WinApi.HitTest.HTMINBUTTON:
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Minimize))
                {
                    if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].IsClick)
                    {
                        if (_metroShadowForm != null && _metroShadowForm.Visible)
                        {
                            _metroShadowForm.Visible = false;
                        }

                        WinApi.SendMessage(this.Handle, (int)WinApi.Messages.WM_SYSCOMMAND, (int)WinApi.Messages.SC_MINIMIZE, 0);
                        UpdateDisplay();
                    }
                }
                break;

            default:
                rv = false;
                break;
            }

            if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Close))
            {
                MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].IsClick = false;
            }
            if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Minimize))
            {
                MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].IsClick = false;
            }
            if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Maximize))
            {
                MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].IsClick = false;
            }

            return(rv);
        }
Example #5
0
        private WinApi.HitTest HitTestNCA(IntPtr hwnd, IntPtr wparam, IntPtr lparam)
        {
            if (DesignMode)
            {
                return(WinApi.HitTest.HTCLIENT);
            }

            Rectangle windowRect  = new Rectangle();
            Point     cursorPoint = new Point();

            WinApi.GetCursorPos(out cursorPoint);
            WinApi.GetWindowRect(this.Handle, ref windowRect);
            cursorPoint.X -= windowRect.Left;
            cursorPoint.Y -= windowRect.Top;
            int width  = windowRect.Right - windowRect.Left;
            int height = windowRect.Bottom - windowRect.Top;

            bool bUpdate = false;

            WinApi.HitTest ht = WinApi.HitTest.HTNOWHERE;

            if (MostraBarraTitolo)
            {
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Close))
                {
                    if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].ClientRectangle.Contains(cursorPoint))
                    {
                        if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].IsHover == false)
                        {
                            MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].IsHover = true;
                            bUpdate = true;
                        }

                        ht = WinApi.HitTest.HTCLOSE;
                    }
                    else
                    {
                        if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].IsHover == true)
                        {
                            MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].IsHover = false;
                            bUpdate = true;
                        }

                        if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].IsClick == true)
                        {
                            MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].IsClick = false;
                            MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Close].IsHover = true;
                            bUpdate = true;
                        }
                    }
                }
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Maximize))
                {
                    if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].ClientRectangle.Contains(cursorPoint))
                    {
                        if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].IsHover == false)
                        {
                            MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].IsHover = true;
                            bUpdate = true;
                        }

                        ht = WinApi.HitTest.HTMAXBUTTON;
                    }
                    else
                    {
                        if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].IsHover == true)
                        {
                            MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].IsHover = false;
                            bUpdate = true;
                        }

                        if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].IsClick == true)
                        {
                            MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].IsClick = false;
                            MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Maximize].IsHover = true;
                            bUpdate = true;
                        }
                    }
                }
                if (MetroWindowButtons.ContainsKey(MetroWindowButton.TipoMetroWindowButton.Minimize))
                {
                    if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].ClientRectangle.Contains(cursorPoint))
                    {
                        if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].IsHover == false)
                        {
                            MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].IsHover = true;
                            bUpdate = true;
                        }

                        ht = WinApi.HitTest.HTMINBUTTON;
                    }
                    else
                    {
                        if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].IsHover == true)
                        {
                            MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].IsHover = false;
                            bUpdate = true;
                        }

                        if (MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].IsClick == true)
                        {
                            MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].IsClick = false;
                            MetroWindowButtons[MetroWindowButton.TipoMetroWindowButton.Minimize].IsHover = true;
                            bUpdate = true;
                        }
                    }
                }
            }

            if (StileBordo == MetroWindowBorderStyle.Fisso)
            {
                return(WinApi.HitTest.HTCLIENT);
            }

            if (bUpdate)
            {
                UpdateDisplay();
            }

            if (ht != WinApi.HitTest.HTNOWHERE)
            {
                return(ht);
            }

            if (new Rectangle(1, 1, WindowRectangle.Width - 2, AltezzaBarraTitolo - 1).Contains(cursorPoint))
            {
                return(WinApi.HitTest.HTCAPTION);
            }
            else
            {
                ResetWindowButtons();
            }

            return(WinApi.HitTest.HTCLIENT);
        }