PointerMoved事件未触发

时间:2014-07-24 13:42:01

标签: c# wpf windows-runtime windows-store-apps winrt-xaml

我有一个Windows商店应用,可以在系统的光标下绘制图像。我使用以下方法捕获所有光标移动:

var window = Window.Current .Content;
window .AddHandler(PointerMovedEvent, new PointerEventHandler (window_PointerMoved), true);

如果我用鼠标移动光标,这个工作正常。

但是,我有另一个应用程序 - 桌面应用程序 - ,它改变了系统光标的位置。我使用此方法以编程方式设置光标的位置:

    [DllImport("user32")]
    private static extern int SetCursorPos(int x, int y);

但是,当以编程方式移动光标时,商店应用上的PointerMovedEvent不会触发! 有谁知道我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:0)

我以为我无法在Windows商店应用上使用System.Runtime .InteropServices,但它是允许的。因此,我设法通过一个主动检查光标当前位置的线程来实现所需的行为:

[ DllImport("user32.dll" )]
private static extern bool GetCursorPos(ref Win32Point pt);

这不是最优雅的解决方案,但它确实有效!