internal static Point GetMousePosition(Visual relativeTo) { DragDropScrollViewer.MouseUtilities.NativeMethods.Win32Point pt = new DragDropScrollViewer.MouseUtilities.NativeMethods.Win32Point(); DragDropScrollViewer.MouseUtilities.NativeMethods.GetCursorPos(ref pt); HwndSource hwndSource = (HwndSource)PresentationSource.FromVisual(relativeTo); DragDropScrollViewer.MouseUtilities.NativeMethods.ScreenToClient(hwndSource.Handle, ref pt); Point point = relativeTo.TransformToAncestor(hwndSource.RootVisual).Transform(new Point(0.0, 0.0)); return(new Point((double)pt.X - point.X, (double)pt.Y - point.Y)); }
internal static extern bool ScreenToClient(IntPtr hwnd, ref DragDropScrollViewer.MouseUtilities.NativeMethods.Win32Point pt);
internal static extern bool GetCursorPos(ref DragDropScrollViewer.MouseUtilities.NativeMethods.Win32Point pt);