public TOOLINFO(int flags) { this.cbSize = Marshal.SizeOf(typeof(TOOLINFO)); this.uFlags = flags; this.hwnd = IntPtr.Zero; this.uId = IntPtr.Zero; this.rect = new RECT(0, 0, 0, 0); this.hinst = IntPtr.Zero; this.lpszText = IntPtr.Zero; this.lParam = IntPtr.Zero; }
internal void CheckBounds(IntPtr hWnd) { CCWin.Win32.Struct.RECT controlRect = new CCWin.Win32.Struct.RECT(); CCWin.Win32.Struct.RECT maskRect = new CCWin.Win32.Struct.RECT(); CCWin.Win32.NativeMethods.GetWindowRect(base.Handle, ref maskRect); CCWin.Win32.NativeMethods.GetWindowRect(hWnd, ref controlRect); uint uFlag = 0x214; if (!CCWin.Win32.NativeMethods.EqualRect(ref controlRect, ref maskRect)) { CCWin.Win32.NativeMethods.Point point = new CCWin.Win32.NativeMethods.Point(controlRect.Left, controlRect.Top); CCWin.Win32.NativeMethods.ScreenToClient(CCWin.Win32.NativeMethods.GetParent(base.Handle), ref point); CCWin.Win32.NativeMethods.SetWindowPos(base.Handle, IntPtr.Zero, point.x, point.y, controlRect.Right - controlRect.Left, controlRect.Bottom - controlRect.Top, uFlag); } }
internal void CreateParamsInternal(IntPtr hWnd) { IntPtr hParent = CCWin.Win32.NativeMethods.GetParent(hWnd); CCWin.Win32.Struct.RECT rect = new CCWin.Win32.Struct.RECT(); CCWin.Win32.NativeMethods.Point point = new CCWin.Win32.NativeMethods.Point(); CCWin.Win32.NativeMethods.GetWindowRect(hWnd, ref rect); point.x = rect.Left; point.y = rect.Top; CCWin.Win32.NativeMethods.ScreenToClient(hParent, ref point); int dwStyle = 0x5400000d; int dwExStyle = 0x88; this._createParams = new System.Windows.Forms.CreateParams(); this._createParams.Parent = hParent; this._createParams.ClassName = "STATIC"; this._createParams.Caption = null; this._createParams.Style = dwStyle; this._createParams.ExStyle = dwExStyle; this._createParams.X = point.x; this._createParams.Y = point.y; this._createParams.Width = rect.Right - rect.Left; this._createParams.Height = rect.Bottom - rect.Top; }
private void FoundAndDrawWindowRect() { CCWin.Win32.NativeMethods.Point pt = new CCWin.Win32.NativeMethods.Point(); pt.x = Control.MousePosition.X; pt.y = Control.MousePosition.Y; IntPtr hWnd = CCWin.Win32.NativeMethods.ChildWindowFromPointEx(CCWin.Win32.NativeMethods.GetDesktopWindow(), pt, 3); if (hWnd != IntPtr.Zero) { IntPtr hTemp = hWnd; while (true) { CCWin.Win32.NativeMethods.ScreenToClient(hTemp, ref pt); hTemp = CCWin.Win32.NativeMethods.ChildWindowFromPointEx(hTemp, pt, 0); if ((hTemp == IntPtr.Zero) || (hTemp == hWnd)) { break; } hWnd = hTemp; pt.x = Control.MousePosition.X; pt.y = Control.MousePosition.Y; } CCWin.Win32.Struct.RECT rect = new CCWin.Win32.Struct.RECT(); CCWin.Win32.NativeMethods.GetWindowRect(hWnd, ref rect); this.imgpb.SetSelectRect(new Rectangle(rect.Left, rect.Top, rect.Right - rect.Left, rect.Bottom - rect.Top)); } }
public static extern bool AdjustWindowRectEx(ref RECT lpRect, int dwStyle, bool bMenu, int dwExStyle);
public static extern bool ValidateRect(IntPtr hWnd, ref RECT lpRect);
public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, ref RECT lParam);
public static extern int RtlMoveMemory(ref CCWin.Win32.Struct.POINT destination, ref RECT Source, int length);
public static void CreateRegion(IntPtr hWnd, int radius, RoundStyle roundStyle, bool redraw) { CCWin.Win32.Struct.RECT bounds = new CCWin.Win32.Struct.RECT(); CCWin.Win32.NativeMethods.GetWindowRect(hWnd, ref bounds); Rectangle rect = new Rectangle(System.Drawing.Point.Empty, bounds.Size); if (roundStyle != RoundStyle.None) { using (GraphicsPath path = GraphicsPathHelper.CreatePath(rect, radius, roundStyle, true)) { using (Region region = new Region(path)) { path.Widen(Pens.White); region.Union(path); IntPtr hDc = CCWin.Win32.NativeMethods.GetWindowDC(hWnd); try { using (Graphics g = Graphics.FromHdc(hDc)) { CCWin.Win32.NativeMethods.SetWindowRgn(hWnd, region.GetHrgn(g), redraw); } } finally { CCWin.Win32.NativeMethods.ReleaseDC(hWnd, hDc); } } return; } } IntPtr hRgn = CCWin.Win32.NativeMethods.CreateRectRgn(0, 0, rect.Width, rect.Height); CCWin.Win32.NativeMethods.SetWindowRgn(hWnd, hRgn, redraw); }
public static extern bool PtInRect(ref RECT lprc, Point pt);
public static extern int OffsetRect(ref RECT lpRect, int x, int y);
public static extern bool InvalidateRect(IntPtr hWnd, ref RECT rect, bool erase);
public static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect);
public static extern bool GetClientRect(IntPtr hWnd, ref RECT r);
private ScrollBarHistTest ScrollBarHitTest(IntPtr hWnd) { CCWin.Win32.NativeMethods.Point point = new CCWin.Win32.NativeMethods.Point(); CCWin.Win32.Struct.RECT rect = new CCWin.Win32.Struct.RECT(); System.Drawing.Point thumbPoint = this.GetScrollBarThumb(); int arrowCx = this.ArrowCx; int arrowCy = this.ArrowCy; CCWin.Win32.NativeMethods.GetWindowRect(hWnd, ref rect); CCWin.Win32.NativeMethods.OffsetRect(ref rect, -rect.Left, -rect.Top); CCWin.Win32.Struct.RECT tp = rect; CCWin.Win32.NativeMethods.GetCursorPos(ref point); CCWin.Win32.NativeMethods.ScreenToClient(hWnd, ref point); if (this.Direction == Orientation.Horizontal) { if (CCWin.Win32.NativeMethods.PtInRect(ref rect, point)) { tp.Right = arrowCx; if (CCWin.Win32.NativeMethods.PtInRect(ref tp, point)) { return ScrollBarHistTest.LeftArrow; } tp.Left = rect.Right - arrowCx; tp.Right = rect.Right; if (CCWin.Win32.NativeMethods.PtInRect(ref tp, point)) { return ScrollBarHistTest.RightArrow; } if (this._owner.RightToLeft == RightToLeft.Yes) { tp.Left = point.y; tp.Right = point.x; } else { tp.Left = thumbPoint.X; tp.Right = thumbPoint.Y; } if (CCWin.Win32.NativeMethods.PtInRect(ref tp, point)) { return ScrollBarHistTest.Thumb; } return ScrollBarHistTest.Track; } } else if (CCWin.Win32.NativeMethods.PtInRect(ref rect, point)) { tp.Bottom = arrowCy; if (CCWin.Win32.NativeMethods.PtInRect(ref tp, point)) { return ScrollBarHistTest.TopArrow; } tp.Top = rect.Bottom - arrowCy; tp.Bottom = rect.Bottom; if (CCWin.Win32.NativeMethods.PtInRect(ref tp, point)) { return ScrollBarHistTest.BottomArrow; } tp.Top = thumbPoint.X; tp.Bottom = thumbPoint.Y; if (CCWin.Win32.NativeMethods.PtInRect(ref tp, point)) { return ScrollBarHistTest.Thumb; } return ScrollBarHistTest.Track; } return ScrollBarHistTest.None; }
private void CalculateRect(IntPtr scrollBarHWnd, bool bHorizontal, out Rectangle bounds, out Rectangle trackRect, out Rectangle topLeftArrowRect, out Rectangle bottomRightArrowRect, out Rectangle thumbRect) { CCWin.Win32.Struct.RECT rect = new CCWin.Win32.Struct.RECT(); CCWin.Win32.NativeMethods.GetWindowRect(scrollBarHWnd, ref rect); CCWin.Win32.NativeMethods.OffsetRect(ref rect, -rect.Left, -rect.Top); int arrowWidth = bHorizontal ? this.ArrowCx : this.ArrowCy; bounds = rect.Rect; System.Drawing.Point point = this.GetScrollBarThumb(bounds, bHorizontal, arrowWidth); trackRect = bounds; if (bHorizontal) { topLeftArrowRect = new Rectangle(0, 0, arrowWidth, bounds.Height); bottomRightArrowRect = new Rectangle(bounds.Width - arrowWidth, 0, arrowWidth, bounds.Height); if (this._owner.RightToLeft == RightToLeft.Yes) { thumbRect = new Rectangle(point.Y, 0, point.X - point.Y, bounds.Height); } else { thumbRect = new Rectangle(point.X, 0, point.Y - point.X, bounds.Height); } } else { topLeftArrowRect = new Rectangle(0, 0, bounds.Width, arrowWidth); bottomRightArrowRect = new Rectangle(0, bounds.Height - arrowWidth, bounds.Width, arrowWidth); thumbRect = new Rectangle(0, point.X, bounds.Width, point.Y - point.X); } }
private void DrawUpDownButton() { bool mouseOver = false; bool mousePress = this.LeftKeyPressed(); bool mouseInUpButton = false; Rectangle clipRect = this._upDownButton.ClientRectangle; CCWin.Win32.Struct.RECT windowRect = new CCWin.Win32.Struct.RECT(); CCWin.Win32.NativeMethods.Point cursorPoint = new CCWin.Win32.NativeMethods.Point(); CCWin.Win32.NativeMethods.GetCursorPos(ref cursorPoint); CCWin.Win32.NativeMethods.GetWindowRect(this._upDownButtonWnd, ref windowRect); mouseOver = CCWin.Win32.NativeMethods.PtInRect(ref windowRect, cursorPoint); cursorPoint.x -= windowRect.Left; cursorPoint.y -= windowRect.Top; mouseInUpButton = cursorPoint.y < (clipRect.Height / 2); using (Graphics g = Graphics.FromHwnd(this._upDownButtonWnd)) { UpDownButtonPaintEventArgs e = new UpDownButtonPaintEventArgs(g, clipRect, mouseOver, mousePress, mouseInUpButton); this._owner.OnPaintUpDownButton(e); } }
public static extern bool RedrawWindow(IntPtr hWnd, ref RECT rectUpdate, IntPtr hrgnUpdate, int flags);