【发布时间】:2012-03-30 16:26:45
【问题描述】:
我正在使用 INPUT 移动鼠标来设置光标位置。这很好,除了我不能使用屏幕值来移动光标。如果我想将光标从 0 设置为 1680,我必须使用 1680*0.66 作为 dx 值来获得正确的位置(游戏内或桌面上)。
(我使用mousemove,因为我在游戏中设置光标位置,绝对定位在那里不起作用。我有两个屏幕,一个是1680宽,另一个是1280)
知道为什么我必须使用这个因素或它来自哪里吗?谢谢。
#define MOUSE_MOVE_FACTOR 0.6619
//Set mouse pos:
void setMousePos(int iX, int iY){
iX = (int)((double)iX*MOUSE_MOVE_FACTOR);
iY = (int)((double)iY*MOUSE_MOVE_FACTOR);
INPUT *buffer = new INPUT[1];
buffer->type = INPUT_MOUSE;
buffer->mi.dx = iX;
buffer->mi.dy = iY;
buffer->mi.mouseData = 0;
buffer->mi.dwFlags = MOUSEEVENTF_MOVE;
buffer->mi.time = 0;
buffer->mi.dwExtraInfo = 0;
SendInput(1,buffer,sizeof(INPUT));
Sleep(100 + (rand() % 50));
}
【问题讨论】:
-
我可以说“内存泄漏”吗?
-
你怎么知道你必须使用这个因素?你刚才是不是想出了一个随机数?
-
游戏经常改变视频模式。
-
我只是尝试在我的桌面上将鼠标设置为 1680 并得出了这个因素。