Exemple #1
0
        protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
        {
            PointInWindowPart ptPos = this.FindPointPossition(e.MouseDevice.GetPosition(this));

            if (ptPos == PointInWindowPart.InTitle ||
                this.DragFullWindows && (ptPos == PointInWindowPart.None))
            {
                this.DragMove();
            }
            else if (ptPos != PointInWindowPart.None && this.Resizable)
            {
                Win32API.SendMessage(this._interopHelper.Handle, Win32API.WM_SYSCOMMAND, (int)(Win32API.SC_SIZE + ptPos), 0);
            }

            base.OnMouseLeftButtonDown(e);
        }
Exemple #2
0
        private PointInWindowPart FindPointPossition(Point pt)
        {
            if (this.ResizeMode != ResizeMode.NoResize &&
                this.ResizeMode != ResizeMode.CanMinimize)
            {
                return(PointInWindowPart.None);
            }

            if (this.WindowState == System.Windows.WindowState.Maximized)
            {
                return(PointInWindowPart.None);
            }

            Rect titleRect = new Rect(this.CornerRadius,
                                      this.BorderThickness.Top,
                                      this.ActualWidth - this.CornerRadius * 2,
                                      this.TitleHeight - this.BorderThickness.Top);
            Rect leftBorderRect = new Rect(0,
                                           this.CornerRadius,
                                           this.BorderThickness.Left,
                                           this.ActualHeight - this.CornerRadius * 2);
            Rect rightBorderRect = new Rect(this.ActualWidth - this.BorderThickness.Right,
                                            this.CornerRadius,
                                            this.BorderThickness.Right,
                                            this.ActualHeight - this.CornerRadius * 2);
            Rect topBorderRect = new Rect(this.CornerRadius,
                                          0,
                                          this.ActualWidth - this.CornerRadius * 2,
                                          this.BorderThickness.Top);
            Rect botttomBorderRect = new Rect(this.CornerRadius,
                                              this.ActualHeight - this.BorderThickness.Bottom,
                                              this.ActualWidth - this.CornerRadius * 2,
                                              this.BorderThickness.Bottom);
            Rect topLeftBorderRect = new Rect(0,
                                              0,
                                              this.CornerRadius,
                                              this.CornerRadius);
            Rect topRightBorderRect = new Rect(this.ActualWidth - this.CornerRadius,
                                               0,
                                               this.CornerRadius,
                                               this.CornerRadius);
            Rect bottomLeftBorderRect = new Rect(0,
                                                 this.ActualHeight - this.CornerRadius,
                                                 this.CornerRadius,
                                                 this.CornerRadius);
            Rect bottomRightBorderRect = new Rect(this.ActualWidth - this.CornerRadius,
                                                  this.ActualHeight - this.CornerRadius,
                                                  this.CornerRadius,
                                                  this.CornerRadius);

            PointInWindowPart ptPos = PointInWindowPart.None;

            if (this.PtInRect(pt, titleRect))
            {
                ptPos       = PointInWindowPart.InTitle;
                this.Cursor = Cursors.Arrow;
            }
            else if (this.PtInRect(pt, leftBorderRect))
            {
                ptPos = PointInWindowPart.Left;
                if (this.Resizable)
                {
                    this.Cursor = Cursors.SizeWE;
                }
            }
            else if (this.PtInRect(pt, rightBorderRect))
            {
                ptPos = PointInWindowPart.Right;
                if (this.Resizable)
                {
                    this.Cursor = Cursors.SizeWE;
                }
            }
            else if (this.PtInRect(pt, topBorderRect))
            {
                ptPos = PointInWindowPart.Top;
                if (this.Resizable)
                {
                    this.Cursor = Cursors.SizeNS;
                }
            }
            else if (this.PtInRect(pt, botttomBorderRect))
            {
                ptPos = PointInWindowPart.Bottom;
                if (this.Resizable)
                {
                    this.Cursor = Cursors.SizeNS;
                }
            }
            else if (this.PtInRect(pt, topLeftBorderRect))
            {
                ptPos = PointInWindowPart.TopLeft;
                if (this.Resizable)
                {
                    this.Cursor = Cursors.SizeNWSE;
                }
            }
            else if (this.PtInRect(pt, topRightBorderRect))
            {
                ptPos = PointInWindowPart.TopRight;
                if (this.Resizable)
                {
                    this.Cursor = Cursors.SizeNESW;
                }
            }
            else if (this.PtInRect(pt, bottomLeftBorderRect))
            {
                ptPos = PointInWindowPart.BottomLeft;
                if (this.Resizable)
                {
                    this.Cursor = Cursors.SizeNESW;
                }
            }
            else if (this.PtInRect(pt, bottomRightBorderRect))
            {
                ptPos = PointInWindowPart.BottomRight;
                if (this.Resizable)
                {
                    this.Cursor = Cursors.SizeNWSE;
                }
            }
            else
            {
                this.Cursor = Cursors.Arrow;
            }

            Debug.WriteLine(ptPos);

            return(ptPos);
        }