"Диалоговые приложения" и DPI Awareness
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 04.06.18 13:17
Оценка: 6 (1)
У меня большинство приложений сделано в виде "диалоговых" — после запуска первым делом вызывается DialogBox() создающий диалог из ресурсного шаблона, и весь гуй реализуется в диалоге (иногда туда же подгружается оконное меню). В диалогах используются только стандартные элементы (Edit/ListBox/ComboBox и т.п.), никаких битмапов или custom controls. Никакой поддержки изменения DPI нет, манифесты не используются.

Когда активно стали продвигать поддержку изменений DPI, я поставил в семерке масштабы 125-150-200%, запустил пару приложений, убедился, что винда отлично масштабирует такие диалоги сама, окна не выглядят "мыльными", успокоился и забыл про это.

Сейчас интереса ради запустил под парой десяток (1709 и 1803), увеличил масштаб — все диалоги масштабируются растрово, изображение нечеткое. Проверил под семеркой — там, как и раньше, все прекрасно.

Добавил манифест с dpiAwareness=PerMonitorV2 — помогло, но только для основных диалогов. Окна, отображаемые при вызове MessageBox, опять растягиваются растрово в десятках до 1803. Из каких соображений они поменяли умолчание, перестав масштабировать диалоги, и как заставить нормально масштабировать MessageBox в предыдущих версиях десятки?

Ну и даже при "умном" растягивании диалога нередко разъезжаются элементы управления, пропадают слова из надписей. Это можно как-то предсказать заранее, или только подбирать положения/размеры элементов экспериментально?
dpi aware awareness dialog диалог createdialog dialogbox messagebox
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.