首页 > 解决方案 > 为什么 SetCursorPos 会将光标位置重置到显示屏的左侧?

问题描述

SetCursorPos将光标移动到指定的屏幕坐标。但是,它似乎有一个错误:如果光标从主显示器移动到第二显示器,并且新的 Y 坐标在主显示器的 Y 范围之外,则光标的 X 坐标会重置到左侧-第二个显示器的手边!该错误如下图所示:

SetCursorPos 错误

在这里,我在左侧有主显示器 1,在右侧有辅助显示器 2。显示了三个使用示例SetCursorPos,其中光标从主显示器 1 移动到辅助显示器 2。

例如bSetCursorPos按预期工作。但是,在示例ac中,我们尝试将光标移动到显示 2 的错误区域,显示为红色阴影。然后光标位置重置到显示器 2 的左侧(显示为黄色阴影)!

这是重现该错误的最短程序:

#include <windows.h>
int main() {
    POINT origPoint;
    GetCursorPos(&origPoint);
    SetCursorPos(origPoint.x + 200, origPoint.y + 200);
}

该程序将光标沿对角线向下和向右移动 200 个屏幕坐标。按照图中示例的方式使用它c:将光标放在显示器 1 的右下角,然后运行程序。您会发现光标移到了显示 2 的左侧。

一些注意事项:

我的心智模型有缺陷吗?是否有其他我不知道的光标移动限制或特殊情况?还是我应该将此报告为 Windows 错误?

标签: c++windowswinapimouseevent

解决方案


推荐阅读