【问题标题】:Screen coordinates for cursor never close to 0光标的屏幕坐标永远不会接近 0
【发布时间】: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


    【解决方案1】:

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

    问题是由于断点使函数的计算时间比我预期的要晚,并且在此过程中移动了我的光标。因此我在调试时看到的值是当时正确的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-16
      • 2012-05-11
      • 2018-01-29
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      相关资源
      最近更新 更多