Я работаю над проектом, похожим на RDP, где я делюсь приложением на удаленной машине.
Мне удается правильно получить координаты на стороне клиента.
Скажем, у меня есть окна 10x10, когда я получаю мышь в левом верхнем углу, я получаю
0,0 и справа внизу дает мне 9x9, что я и хочу.
Я отправляю это по проводу и пытаюсь отобразить эту координату в реальном приложении.
RECT WindowRect = { 0, 0, 0, 0 };
RECT WindowClientRect = { 0, 0, 0, 0 };
POINT Origin;
//POINT Ofs;
GetWindowRect(appCaptureHwnd, &WindowRect);
//GetClientRect(appCaptureHwnd, &WindowClientRect);
Origin.y = WindowRect.top;
Origin.x = WindowRect.left;
//ClientToScreen(appCaptureHwnd, &Origin);
//Ofs.x = Origin.x - WindowRect.left;
//Ofs.y = Origin.y - WindowRect.top;
int maxWidth = GetSystemMetrics(SM_CXSCREEN);
int maxHeight = GetSystemMetrics(SM_CYSCREEN);
// per app sharing code maps the browser map coordinates to the coordintes of the actual sender shared app
mouse_event.mi.dx = (LONG)((float)(((Origin.x + x) * (65535.0f) / maxWidth)));
mouse_event.mi.dy = (LONG)((float)(((Origin.y + y) * (65535.0f) / maxHeight)));
Когда я запускаю этот код, я получаю координаты x, y правильно, когда я нахожусь на 0x0, но когда я двигаюсь в правый нижний угол, я вижу, что координата y линейно уменьшается, она получает около 30 пикселей Выкл по вертикали, но координата х верна.
Итак, я предполагаю, что меню вызывает это, но не границу приложения, поскольку координата x верна.
Это происходит во всех приложениях, я тестирую с терминалом в качестве общего приложения.
Я предполагаю, что его стиль WS_OVERLAPPED.
У меня есть нить и Процесс, настроенные на DPI_AWARENESS_CONTEXT_SYSTEM_AWARE
Любые идеи, что может быть причиной этого.