У меня 2 монитора с разным разрешением и масштабированием:
2560 * 1440, масштабирование x1 (основной)
Масштабирование 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]
Похоже, это происходит, когда окно частично находится на дополнительном мониторе, а средняя точка окна уже на основном мониторе.
Что я могу сделать, чтобы избежать такого поведения?
Задача ещё не решена.
Других решений пока нет …