我想获得相对于屏幕坐标的鼠标位置。我正在使用下面的代码来做到这一点。鼠标移动不触发外部WPF主窗口
window.PointToScreen(Mouse.GetPosition(window));
它工作正常。但是我的MouseMove事件不会在MainWindow之外触发。这是如果我将我的鼠标移动到桌面上并恢复了我的窗口。
任何想法表示赞赏。
我想获得相对于屏幕坐标的鼠标位置。我正在使用下面的代码来做到这一点。鼠标移动不触发外部WPF主窗口
window.PointToScreen(Mouse.GetPosition(window));
它工作正常。但是我的MouseMove事件不会在MainWindow之外触发。这是如果我将我的鼠标移动到桌面上并恢复了我的窗口。
任何想法表示赞赏。
使用CaptureMouse()方法。
对于你上面的例子,你可以添加:
window.CaptureMouse();
在您的代码隐藏MouseDown事件处理程序中。
然后你需要调用:
window.ReleaseMouseCapture();
在您的代码隐藏MouseUp事件处理程序中。
我需要能够捕捉WPF窗口之外的鼠标位置,而不管按下任意鼠标按钮的。我最终使用Interop来调用与线程结合的WINAPI GetCursorPos,而不是窗口的事件。
using System.Runtime.InteropServices;
using Point = System.Drawing.Point;
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetCursorPos(ref Point lpPoint);
public MainWindow()
{
InitializeComponent();
new Thread(() =>
{
while (true)
{
//Logic
Point p = new Point();
GetCursorPos(ref p);
//Update UI
Dispatcher.BeginInvoke(new Action(() =>
{
Position.Text = p.X + ", " + p.Y;
}));
Thread.Sleep(100);
}
}).Start();
}
}
很棒!
非常有帮助!谢谢 – DevEstacion 2013-10-02 11:47:10