У нас проблема с одним из наших существующих приложений на базе Win32 MFC.Он не отображается правильно на дисплеях, которые используют настройки с высоким разрешением.В частности, в Windows XP с выбранным разрешением 120 т / д в приложении есть несколько мест, где текст масштабируется, но не его контейнеры (текст, выходящий за границы его кнопки и т. Д.).Это также происходит в Windows 7 (и Vista), когда выбрано> 96 точек на дюйм и выбрано «использовать масштабирование точек на дюйм в стиле XP».Если масштабирование в стиле xp не выбрано, я понимаю, что Win7 вместо этого использует виртуализацию DPI.При использовании виртуализации DPI все выглядит хорошо (все хорошо, но по крайней мере они правильные).По умолчанию в Win7 120 dpi использует масштабирование в стиле xp, а следующий параметр (144 dpi) - нет.Таким образом, наше приложение выглядит правильно при 144 dpi, но неправильно при 120 dpi.
Если я отредактирую манифест приложения, объявив его «DPI-совместимым», то это повернет виртуализацию DPI (но не масштабирование dpi в стиле XP) иэто меня никуда не приведет.Все выглядит очень плохо (без изменений для 120 т / д, теперь 144 т / д не работает).
Мне нужно исправить эту проблему, и я попытался прочитать вопросы о DPI / масштабировании в целом, и это было обучениеопыт.Пока я не нашел подходящего решения.На данный момент у меня нет намерения делать полное и правильное исправление (приложение корректно масштабирует все элементы в соответствии с dpi).Это будет включать много переписывания.Я думаю, что на самом деле есть два возможных решения.Одним из них является отключение любого вида масштабирования DPI все вместе.Это означало бы, что если бы пользовательская система Win7 была настроена на 120 dpi, то все в их системе выглядело бы хорошо / хорошо, но наше приложение выглядело бы правильно, но было бы небольшим по сравнению со всем остальным в других приложениях.Второе решение заключается в том, чтобы заставить наше приложение использовать виртуализацию DPI, но никогда не использовать масштабирование точек на дюйм в стиле XP.Я хочу, чтобы это было изменением на стороне приложения и не полагалось на то, что конечным пользователям придется вносить изменения в конфигурацию Windows.
Пока что я не нашел способа реализовать какое-либо решение.
Может кто-тоболее осведомлен в этом вопросе, пожалуйста, ответьте и укажите меня правильно?
Спасибо