SetWindowPos с различными мониторами масштабирования устанавливает положение в неправильном месте

У меня 2 монитора с разным разрешением и масштабированием:

  1. 2560 * 1440, масштабирование x1 (основной)

  2. Масштабирование 1920 * 1200 x1,5 (слева от основного
    [2] [1] выровнено по верху)

Мое приложение меняет положение другого окна приложения. Окно, в котором я пытаюсь установить местоположение, имеет размеры 300х200. Я устанавливаю расположение окна в (-150 | 200) и в следующем ряду проверяю местоположение:

::SetWindowPos(this->handle, 0, lLeft, lTop, 0,0, SWP_NOREPOSITION | SWP_NOSIZE);
// output lLeft, lTop
RECT r = { 0 };
::GetWindowRect(this->handle, &r);
// output r.left, r.top

И у меня есть следующий вывод:

<< -150  200 // SetWindowPos
>> -740  133 // GetWindowRect

После позиционирования окно имеет масштабирование 1 (от основного), в то время как находится на вторичном и должно иметь масштаб 1,5

Это неуместно окно с x = [-150 ... 0]

Похоже, это происходит, когда окно частично находится на дополнительном мониторе, а средняя точка окна уже на основном мониторе.

Что я могу сделать, чтобы избежать такого поведения?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]