private void DrawNCArea(IntPtr hRgn) { Region clipRegion = null; if (hRgn != TRUE) { clipRegion = Region.FromHrgn(hRgn); } RECT windowRect = new RECT(); RECT nclientRect = new RECT(); RECT clientRect = new RECT(); User32.GetWindowRect(parentWindowHWnd, ref windowRect); User32.OffsetRect(ref windowRect, -windowRect.left, -windowRect.top); var height = windowRect.bottom; var width = windowRect.right; User32.GetClientRect(parentWindowHWnd, ref clientRect); User32.OffsetRect(ref clientRect, -clientRect.left, -clientRect.top); User32.GetClientRect(parentWindowHWnd, ref nclientRect); User32.OffsetRect(ref nclientRect, -clientRect.left, -clientRect.top); User32.OffsetRect(ref nclientRect, borderSize, borderSize); IntPtr hDC = User32.GetWindowDC(parentWindowHWnd); var windowRectangle = new Rectangle(windowRect.left, windowRect.top, (int)windowRect.Width, (int)windowRect.Height); var clientRectangle = new Rectangle(nclientRect.left, nclientRect.top, (int)clientRect.Height, (int)clientRect.Width); try { COLORREF color = new COLORREF(borderColor); IntPtr hBrush = Gdi32.CreateSolidBrush(color.ColorDWORD); Gdi32.ExcludeClipRect(hDC, nclientRect.left, nclientRect.top, nclientRect.right, nclientRect.bottom); User32.FillRect(hDC, ref windowRect, hBrush); Gdi32.DeleteObject(hBrush); } catch (Exception ex) { } finally { User32.ReleaseDC(parentWindowHWnd, hDC); } }
private void DrawNCArea(IntPtr hRgn) { Region clipRegion = null; if (hRgn != TRUE) { clipRegion = Region.FromHrgn(hRgn); } RECT windowRect = new RECT(); RECT clientRect = new RECT(); User32.GetWindowRect(parentWindowHWnd, ref windowRect); User32.OffsetRect(ref windowRect, -windowRect.left, -windowRect.top); var height = windowRect.bottom; var width = windowRect.right; if (Win_Height == height && Win_Width == width) { return; } Win_Height = height; Win_Width = width; User32.GetClientRect(parentWindowHWnd, ref clientRect); User32.OffsetRect(ref clientRect, -clientRect.left, -clientRect.top); User32.OffsetRect(ref clientRect, borderSize, borderSize); IntPtr hDC = User32.GetWindowDC(parentWindowHWnd); COLORREF color = new COLORREF(borderColor); try { IntPtr hBrush = Gdi32.CreateSolidBrush(color.ColorDWORD); Gdi32.ExcludeClipRect(hDC, clientRect.left, clientRect.top, clientRect.right, clientRect.bottom); User32.FillRect(hDC, ref windowRect, hBrush); //var topRect = new RECT(0, 0, (int)windowRect.Width, borderSize); //var bottomRect = new RECT(0, (int)windowRect.Height - borderSize, (int)windowRect.Width, borderSize); //var leftRect = new RECT(0, borderSize, borderSize, (int)windowRect.Height - borderSize * 2); //var rightRect = new RECT((int)windowRect.Width - borderSize, borderSize, borderSize, (int)windowRect.Height - borderSize * 2); //User32.FillRect(hDC, ref topRect, hBrush); //User32.FillRect(hDC, ref bottomRect, hBrush); //User32.FillRect(hDC, ref leftRect, hBrush); //User32.FillRect(hDC, ref rightRect, hBrush); Gdi32.DeleteObject(hBrush); } catch (Exception ex) { } finally { User32.ReleaseDC(parentWindowHWnd, hDC); } }