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));
        }