问题
当你使用谷歌搜索这样的问题时,你会得到很多结果,但所有的解决方案都假设你至少有一个窗口。
但我的问题就像我表述的那样——完全没有假设。我可以有一个窗口,但我也可能没有窗口(因为我甚至没有展示一个或者我刚关闭了最后一个)。所以简而言之,解决方案不能依赖于任何小部件或窗口——唯一已知的是有一个桌面(和运行的应用程序,但它没有任何窗口)。
所以问题是——如何获取鼠标位置?
背景
我想显示居中于鼠标位置的窗口。在WPF中没有这样的模式(只有居中于所有者或居中于屏幕),所以我必须手动实现。缺失的部分就是鼠标位置。
编辑
谢谢大家,现在我有了解决方案的第一部分——原始位置。现在的问题是如何将数据转换为WPF。我找到了这样的主题:WPF像素到桌面像素,但它再次假设有一些窗口。
然后我继续谷歌搜索,我找到了解决方案:http://jerryclin.wordpress.com/2007/11/13/creating-non-rectangular-windows-with-interop/
代码包括一个类,用于缩放仅依赖于桌面信息的坐标。将这两个部分结合起来,我最终得到了解决方案:-)。再次感谢。
Point wpfUnits = new Point(physicalUnitSize * (double)x, physicalUnitSize * (double)y);
替换为Point wpfUnits = new Point((double)x / physicalUnitSize, (double)y / physicalUnitSize);
以修复屏幕缩放问题。 - Christian Beregula