private void PaintNonClientRegion(ref Message m) { IntPtr handle = Handle; NativeMethods.RECT windowRect; NativeMethods.GetWindowRect(handle, out windowRect); windowRect = new NativeMethods.RECT( 0, 0, windowRect.Right - windowRect.Left, windowRect.Bottom - windowRect.Top); using (var deviceContext = new NativeMethods.DeviceContext(handle)) { var renderer = new VisualStyleRenderer( Enabled ? ReadOnly ? VisualStyleElement.TextBox.TextEdit.ReadOnly : VisualStyleElement.TextBox.TextEdit.Normal : VisualStyleElement.TextBox.TextEdit.Disabled); int clipResult = NativeMethods.ExcludeClipRect( deviceContext.GetHdc(), _borderRect.Left, _borderRect.Top, windowRect.Right - _borderRect.Right, windowRect.Bottom - _borderRect.Bottom); if (clipResult == NativeMethods.SIMPLEREGION || clipResult == NativeMethods.COMPLEXREGION) { if (renderer.IsBackgroundPartiallyTransparent()) renderer.DrawParentBackground(deviceContext, windowRect.ToRectangle(), this); renderer.DrawBackground(deviceContext, windowRect.ToRectangle()); } } m.Result = IntPtr.Zero; }
private void CalculateNonClientSize(ref Message m) { NativeMethods.NCCALCSIZE_PARAMS parameters; NativeMethods.RECT windowRect; ExtractParamsAndWindowRect(ref m, out parameters, out windowRect); var renderer = new VisualStyleRenderer(VisualStyleElement.TextBox.TextEdit.Normal); using (var deviceContext = new NativeMethods.DeviceContext(Handle)) { var contentRect = new NativeMethods.RECT( renderer.GetBackgroundContentRectangle(deviceContext, windowRect.ToRectangle())); contentRect.Inflate(-1, -1); _borderRect = new NativeMethods.RECT( contentRect.Left - windowRect.Left, contentRect.Top - windowRect.Top, windowRect.Right - contentRect.Right, windowRect.Bottom - contentRect.Bottom); if (m.WParam == IntPtr.Zero) Marshal.StructureToPtr(contentRect, m.LParam, false); else { parameters.rgrc0 = contentRect; Marshal.StructureToPtr(parameters, m.LParam, false); } } m.Result = new IntPtr(NativeMethods.WVR_REDRAW); }