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(); } }
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); } }
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); }
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); }
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); }