【发布时间】:2019-12-31 16:23:37
【问题描述】:
我正在使用 user32.dll 函数 GetCursorPos 来获取我的光标的 SCREEN 坐标。我需要知道光标是否位于屏幕顶部(包括多个监视器设置)。
但是,当我尝试测试 GetCursorPos 给我的 Y 坐标时,我从来没有得到小于 250 左右的坐标,即使我在两个屏幕的所有屏幕边框周围移动了光标。
我原以为我的主屏幕的左上角会是 [0,0] 并且 Y 会随着我在屏幕上的降低而增长,为什么它以这么高的数字开头?
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetCursorPos(out POINT lpPoint);
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int X;
public int Y;
public POINT(int x, int y)
{
this.X = x;
this.Y = y;
}
}
private void Whatever() {
POINT lMousePosition;
GetCursorPos(out lMousePosition)
}
我希望函数的输出在某处的 Y 坐标中小于 10……它不是。为什么?
编辑:
我找到了解决方案。该函数返回正确的值,但我使用断点来查看所述值改变了它,而不是我想在断点被击中时看到的值。
【问题讨论】:
标签: c# wpf coordinates user32 mouse-position