[WinAPI] zbyt duże przesunięcie myszy przy SendInput()

0

Witam mam problem z funkcją SendInput(...)

funkcja wygląda tak:
#define _WIN32_WINNT 0x0403
#define WINVER 0x0410
#include <windows.h> // Header File For Windows
...

case WM_LBUTTONDOWN:
{
mouseMove();
break;
}
...
void mouseMove(){
unsigned long xx=100;
INPUT Klik;
ZeroMemory (&Klik, sizeof(INPUT));
Klik.type = INPUT_MOUSE;
Klik.mi.dx = 100;
Klik.mi.dwFlags = MOUSEEVENTF_MOVE;
SendInput (1, &Klik, sizeof(INPUT)); // generujemy zdarzenie
}

z tego co się dowiedziałem powinno przesunąć to kursor myszy o 100 pixeli w prawo
niestety u mnie przesuwa o inną ilość (np 200 i cos)
przy innych wartościach także działa różnie (np przy 5 przesuwa o 5 ale przy 10 juz o 14 itd)
jest to aplikacja OGL potrzebuję tego do wyśrodkowania kursora w okienku
jeśli ktoś mógłby wyjaśnić co robię źle to byłbym wdzięczny

0

mozliwe, ze wcina Ci sie windowsowa poprawka prezsuniecia mysza obliczana na podstawie predkosci ruchu wskaznika. w windowsie sa 3 albo 4ry progi - na zerowym nie ma poprawki. jak predkosc wskaznika przekroczy X, dorzucana jest poprawka. jak przekroczy 2X, dorzucana jest wieksza poprawka etc.

wielkosc X mozesz regulowac w panelu sterowania w narzedziu Mysz, zakladka 'opcje wskaznika', suwak "ruch/wybierz szybkosc wskaznika"

nie wiem czy to jest to, ale brzmi bardzo podobnie.
jesli to to, to pozostaje Ci albo zwiekszyc wartosc tej opcji, albo -- zamiast wyslac MOUSEEVENTF_MOVE z dX = 200, wyslij 2x z dX=100. o ile dobrze pamietam ta drobna opcja myszy jest na tyle "glupia", ze reaguje na wartosci pojedynczych przesuniec, a nie na srednia predkosc ruchow mysza!

1 użytkowników online, w tym zalogowanych: 0, gości: 1