光标的屏幕坐标永远不会接近0

时间:2019-08-27 13:13:12

标签: c# wpf coordinates user32 mouse-position

我正在使用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,但不是。为什么?

编辑:

我找到了解决方案。该函数返回正确的值,但是我使用断点来查看所述值将断点更改为我想看到的值。

1 个答案:

答案 0 :(得分:-1)

我编辑了问题,所以它也在那里...

问题是由断点引起的,该断点使函数的评估晚于我的预期,并在过程中移动了光标。因此,我在调试时看到的值当时是正确的值。