Я столкнулся с интересной проблемой. По крайней мере, в Vista, getSystemMetrics (SM_CXSCREEN) возвращает неправильное значение, когда настольные настройки DPI не установлены в 100%. Например, я попробовал 150% в 1366x768, экран и getSystemMetrics () возвращаются 911 вместо 1366 (и 1366 / 1,5 ~ 911)
Согласно MSDN, getSystemMetrics (SM_CXSCREEN) возвращает пиксели, таким образом, я думал, что это значение не будет затронуто настройками DPI - но это. Так есть ли более безопасный способ узнать истинное, немасштабированное разрешение экрана?
Программа должна сообщить операционной системе, что она поддерживает разрешение DPI, чтобы получить истинное разрешение при превышении 125%. Лучше всего это сделать с помощью манифеста, как описано в статье библиотеки MSDN .