У меня есть 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]
Похоже, это происходит, когда окно частично находится на дополнительном мониторе исредняя точка окна уже на основном мониторе.
Могу ли я что-нибудь сделать, чтобы избежать такого поведения?