GetCursorPos показывает неверные координаты при масштабировании более 100% в системе винды

#include <windows.h>
#include <iostream>

using namespace std;

int main() {
POINT MousePoint;
    while (GetCursorPos(&MousePoint)) 
    {
        system("cls");
        cout << MousePoint.x << "," << MousePoint.y;
        Sleep(100);
    }
}

Ответы (1 шт):

Автор решения: web developer
#include <windows.h>
#include <iostream>

using namespace std;

typedef BOOL(WINAPI* GetPhysicalCursorPos_t)(LPPOINT);

int main() {
    POINT MousePoint;
    HMODULE user32 = GetModuleHandle(L"user32.dll");
    GetPhysicalCursorPos_t GetPhysicalCursorPos = (GetPhysicalCursorPos_t)GetProcAddress(user32, "GetPhysicalCursorPos");

    while (true) {
        system("cls");
        if (GetPhysicalCursorPos) {
            GetPhysicalCursorPos(&MousePoint);
        } else {
            GetCursorPos(&MousePoint);
        }
        cout << MousePoint.x << "," << MousePoint.y;
        Sleep(100);
    }
    return 0;
}
→ Ссылка