public Boolean hover(Point mouseLocation) { Boolean isHovering = false; _direction = resizeDirection.none; if (nW.Contains(mouseLocation)) { isHovering = true; _direction = resizeDirection.nW; } else if (nE.Contains(mouseLocation)) { isHovering = true; _direction = resizeDirection.nE; } else if (sW.Contains(mouseLocation)) { isHovering = true; _direction = resizeDirection.sW; } else if (sE.Contains(mouseLocation)) { isHovering = true; _direction = resizeDirection.sE; } else if (contains(mouseLocation)) { isHovering = true; } return (isHovering); }
protected void resizeWindow(object sender, resizeDirection direction) { IntPtr handle = new WindowInteropHelper(get(sender)).Handle; SendMessage(handle, 0x112, (IntPtr)(0xF000 + direction), IntPtr.Zero); SendMessage(handle, 514, IntPtr.Zero, IntPtr.Zero); }
private void ODockWindow_MouseMove(object sender, MouseEventArgs e) { if (isResize) { int diffX = Cursor.Position.X - dragStart.X; int diffY = Cursor.Position.Y - dragStart.Y; container.SuspendDrawing(); switch (resizeDir) { case resizeDirection.topLeft: // \ Top Left Cursor.Current = Cursors.SizeNWSE; Width = Math.Max(originalSize.Width - diffX, minimumWidth); Height = Math.Max(originalSize.Height - diffY, minimumHeight); Left = (originalLocation.X + originalSize.Width) - Width; Top = (originalLocation.Y + originalSize.Height) - Height; break; case resizeDirection.topRight: // / Top Right Cursor.Current = Cursors.SizeNESW; Width = Math.Max(originalSize.Width + diffX, minimumWidth); Height = Math.Max(originalSize.Height - diffY, minimumHeight); Top = (originalLocation.Y + originalSize.Height) - Height; break; case resizeDirection.bottomLeft: // / Bottom Left Cursor.Current = Cursors.SizeNESW; Width = Math.Max(originalSize.Width - diffX, minimumWidth); Height = Math.Max(originalSize.Height + diffY, minimumHeight); Left = (originalLocation.X + originalSize.Width) - Width; break; case resizeDirection.bottomRight: // \ Bottom Right Cursor.Current = Cursors.SizeNWSE; Width = Math.Max(originalSize.Width + diffX, minimumWidth); Height = Math.Max(originalSize.Height + diffY, minimumHeight); break; case resizeDirection.left: // — Left Cursor.Current = Cursors.SizeWE; Width = Math.Max(originalSize.Width - diffX, minimumWidth); Left = (originalLocation.X + originalSize.Width) - Width; break; case resizeDirection.right: // — Right Cursor.Current = Cursors.SizeWE; Width = Math.Max(originalSize.Width + diffX, minimumWidth); break; case resizeDirection.top: // | Top Cursor.Current = Cursors.SizeNS; Height = Math.Max(originalSize.Height - diffY, minimumHeight); Top = (originalLocation.Y + originalSize.Height) - Height; break; case resizeDirection.bottom: // | Bottom Cursor.Current = Cursors.SizeNS; Height = Math.Max(originalSize.Height + diffY, minimumHeight); break; } container.ResumeDrawing(); } else { if (e.X < gripSize && e.Y < gripSize) { Cursor.Current = Cursors.SizeNWSE; resizeDir = resizeDirection.topLeft; } else if (e.X >= ClientSize.Width - gripSize && e.Y < gripSize) { Cursor.Current = Cursors.SizeNESW; resizeDir = resizeDirection.topRight; } else if (e.X < gripSize && e.Y >= ClientSize.Height - gripSize) { Cursor.Current = Cursors.SizeNESW; resizeDir = resizeDirection.bottomLeft; } else if (e.X >= ClientSize.Width - gripSize && e.Y >= ClientSize.Height - gripSize) { Cursor.Current = Cursors.SizeNWSE; resizeDir = resizeDirection.bottomRight; } else if (e.X < gripSize) { Cursor.Current = Cursors.SizeWE; resizeDir = resizeDirection.left; } else if (e.X >= ClientSize.Width - gripSize) { Cursor.Current = Cursors.SizeWE; resizeDir = resizeDirection.right; } else if (e.Y < gripSize) { Cursor.Current = Cursors.SizeNS; resizeDir = resizeDirection.top; } else if (e.Y >= ClientSize.Height - gripSize) { Cursor.Current = Cursors.SizeNS; resizeDir = resizeDirection.bottom; } } }