private IntPtr WmHcHitTest(IntPtr lparam, ref bool handled) { if (PresentationSource.FromDependencyObject(this) == null) { return(new IntPtr(0)); } var point1 = new Point(NativeMethods.GetXlParam(lparam.ToInt32()), NativeMethods.GetYlParam(lparam.ToInt32())); var point2 = PointFromScreen(point1); DependencyObject visualHit = null; VisualUtilities.HitTestVisibleElements(this, target => { visualHit = target.VisualHit; return(HitTestResultBehavior.Stop); }, new PointHitTestParameters(point2)); var num = 0; for (; visualHit != null; visualHit = visualHit.GetVisualOrLogicalParent1()) { var nonClientArea = visualHit as INonClientArea; if (nonClientArea == null) { continue; } num = nonClientArea.HitTest(point1); if (num != 0) { break; } } if (num == 0) { num = 1; } handled = true; return(new IntPtr(num)); }