Я пытался найти ответ на этот вопрос в MSDN, но у меня нет четкого представления о том, как это должно работать. Вся моя работа на Windows 8.1.
Вот моя проблема. Я работаю на ноутбуке с монитором высокого разрешения 3200x1800. Я использую EnumDisplayMonitors, чтобы получить ограничивающий прямоугольник моего экрана.
Кажется, это работает нормально, если мои настройки дисплея установлены по умолчанию. Но я заметил, что когда я изменяю настройки отображения окна, чтобы отображать текст большего размера, разрешение, возвращаемое EnumDisplayMonitor, изменяется. Вместо 3200х1800 я получу 2133х1200.
Я предполагаю, что, поскольку я попросил увеличить текст, Windows решила представить экран как меньшее разрешение.
Кажется, что если я смотрю в свойствах виртуального экрана, то все представлено в реальных координатах моего экрана, т.е. 3200x1800. Но API-интерфейсы для получения прямоугольников окна и монитора, похоже, работают с этим «другим» координатным пространством.
Есть ли какая-либо документация/Windows API для обработки преобразования между этими «другими координатами» и «виртуальными координатами»? то есть, если я хочу, чтобы EnumDisplayMonitor или GetMonitorInfo давали мне истинные координаты экрана, как мне преобразовать 2133x1200 в 3200x1800?