В винде, как известно, есть проблема масштабирования диалогов: когда система растягивает диалог для отображения в масштабе больше 100%, размеры элементов приходится округлять, из-за чего они нередко отображаются неправильно (чаще всего пропадают последние буквы static text).
Подбирать размеры/расстояния, изменяя их в редакторе, собирая приложение, и запуская его в сеансе с масштабированием, долго и муторно, а включать масштабирование в рабочем сеансе — стремно.
Может, есть какой-нибудь софт, помогающий двигать элементы и менять их размер в активном/отображенном диалоге, с последующим пересчетом позиций/размеров в DLU?
Re: Программы для тестирования размеров элементов диалога
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>В винде, как известно, есть проблема масштабирования диалогов: когда система растягивает диалог для отображения в масштабе больше 100%, размеры элементов приходится округлять, из-за чего они нередко отображаются неправильно (чаще всего пропадают последние буквы static text).
ЕМ>Подбирать размеры/расстояния, изменяя их в редакторе, собирая приложение, и запуская его в сеансе с масштабированием, долго и муторно, а включать масштабирование в рабочем сеансе — стремно.
ЕМ>Может, есть какой-нибудь софт, помогающий двигать элементы и менять их размер в активном/отображенном диалоге, с последующим пересчетом позиций/размеров в DLU?
Тебе не понравиться — WebView
Re[2]: Программы для тестирования размеров элементов диалога
Здравствуйте, Евгений Музыченко, Вы писали:
_>>Тебе не понравиться — WebView
ЕМ>А куда там лошадь запрягать WinAPI прикручивать?
Как куда прямо на диалог кладёте ActiveX и алга
Но это будет устаревшее говно Trident. Хотя мои приложения, которым по 20 лет, до сих пор прекрасно работают, но писать новое я б на нём не стал.
Есть WebView2, на Хромиуме, но под 11-ую. Есть CEF. И есть Sciter. Бизнес-логику, и ту часть WinAPI, которое не про UI, можно вызывать из скриптовых обработчиков событий.
Но сначала один вопрос ТСу. Как у него так получается, что пропадают последние буквы static text, если localizable UI предполагает немецкий язык и очень большой запас длины? На немецком пропадают? Так им и надо, фашистам. Но если пропадает на других языках, надо просто запас сделать побольше. Сейчас уже трудно найти винапишную программу в виндах, но я взял регедит и сфоткал диалог оттуда с PE (это та же функция, что в Spy), вот какой запас по ширине:
Но и то, это плохо сделано. Надо было на всю ширину диалога. К чему эта странная экономия?
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.
Re[4]: Программы для тестирования размеров элементов диалога
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Мне бы хотелось именно того, что я изначально описал. Это ж не только для своего — есть и другие приложения, которые портятся при масштабировании.
ЕМ>Есть такое, или никто не сподобился?
А всем лень разбираться. Там же и масштабирование экранов и dpi видео драйвера и размеры шрифтов плюс костыли для совместимости и ещё сверху бантик с манифестами.
И всё это вместо банальной фунции получения физических размеров в мм
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Мне бы хотелось именно того, что я изначально описал. Это ж не только для своего — есть и другие приложения, которые портятся при масштабировании. ЕМ>Есть такое, или никто не сподобился?
AFAIK для воспроизведения большинства Win API (GDI) проблем с HiDPI нужен реальный 4к+ монитор к сожалению, без него их не воспроизвести. Если нет — идти в магазин на амазон и покупать.
С ним они элементарно воспроизводятся просто установкой масштаба. Студия умеет переключаться (devenv /noscale). С "обычным" монитором эти проблемы не воспроизводятся, какой бы ты масштаб ни ставил.
Насколько я понял, поскольку проблемы зарыты в системе, пользовательского софта для их эмуляции AFAIK нет (я искал)
ActiveX (Web Browser Control) устарел на 20 лет, там IE11 максимум (да и тот с приседаниями), на котором уже ничего практически не работает.
Это не учитывая проблемы которые всегда были (типа ActiveX security warning)
CEF тебе скорее всего не понравится (50мб на ровном месте за здорово живешь)
Sciter (здесь) в принципе норм, я на нем делал UI, небольшой и достаточно удобный для плюсов,
минус тот, что почти все современные готовые javasript web-ui библиотеки на нем не работают (даже jQuery) Андрей упирался рогом годами со своим tiscript, ну вот и результат. Невозможно объять необъятное.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>В винде, как известно, есть проблема масштабирования диалогов: когда система растягивает диалог для отображения в масштабе больше 100%, размеры элементов приходится округлять, из-за чего они нередко отображаются неправильно (чаще всего пропадают последние буквы static text).
Эх, Win32 и его "поддержка" High DPI. Мало того, что надо все ручками делать, например, если рисовать GDI линию в один пиксел, то на масштабе до 150 рисуем в один пиксел, от 150 до 249 — в два и тд., самому изменить размеры окон, выбирать нужный набор графики (если растровая) под каждый масштаб, так еще диалоги живут своей жизнью, так как там не пикселы, а dialog units или как их там
Там как раз есть изменение размера контролов при изменении текста в них.
What is XUILIB?
XUILIB is the open source XML User Interface Library. XUILIB allow you to define the dialog boxes using the XML files. XUILIB XML files syntax is very similar to html. Generally you don't need to define the element's sizes, XUILIB have the build-in layout manager, so all elemnts will be at right positions, even the text labels are changed.
Main Features
All controls are the native Windows controls so there no problems with the XP/Vista themes
Automatically calculated layout
Support standards for control sizes and spaces between controls
External localization files in the XML format
Open Source
Re[6]: Программы для тестирования размеров элементов диалога
Здравствуйте, kov_serg, Вы писали:
_>всем лень разбираться.
В чем разбираться? Для описанной задачи достаточно как-то указать требуемый элемент, и вызывать для него SetWindowPos. Даже в процесс встраиваться не нужно.
Re[6]: Программы для тестирования размеров элементов диалога
Здравствуйте, bnk, Вы писали:
bnk>AFAIK для воспроизведения большинства Win API (GDI) проблем с HiDPI нужен реальный 4к+ монитор к сожалению, без него их не воспроизвести.
Чем реальный монитор отличается от виртуального экрана VM? Монитор-то никак не обрабатывает изображение.
bnk>С ним они элементарно воспроизводятся просто установкой масштаба.
Те проблемы, о которых я писал, элементарно воспроизводятся на любом экране, хоть реальном, хоть виртуальном, установкой масштаба 125%.
Про библиотеки я в курсе, но мне пока нужно всего лишь подобрать размеры/положения элементов, чтоб не сильно съезжали при типовом масшабировании.
Re[2]: Программы для тестирования размеров элементов диалога
Здравствуйте, TheBeginner, Вы писали:
TB>если рисовать GDI линию в один пиксел, то на масштабе до 150 рисуем в один пиксел, от 150 до 249 — в два и тд.
Не понял. Что значит "линию в один пиксел" — указывать единичную ширину в функциях рисования, или чтоб она занимала один пиксел на экране?
, самому изменить размеры окон, выбирать нужный набор графики (если растровая) под каждый масштаб, так еще диалоги живут своей жизнью, так как там не пикселы, а dialog units или как их там
TB>Посмотрите на XUILIB от нашего форумчанина:
Спасибо, погляжу.
Re[7]: Программы для тестирования размеров элементов диалога
Здравствуйте, Евгений Музыченко, Вы писали:
bnk>>AFAIK для воспроизведения большинства Win API (GDI) проблем с HiDPI нужен реальный 4к+ монитор к сожалению, без него их не воспроизвести.
ЕМ>Чем реальный монитор отличается от виртуального экрана VM? Монитор-то никак не обрабатывает изображение.
bnk>>С ним они элементарно воспроизводятся просто установкой масштаба.
ЕМ>Те проблемы, о которых я писал, элементарно воспроизводятся на любом экране, хоть реальном, хоть виртуальном, установкой масштаба 125%.
У меня не воспроизводились, поэтому и говорю. Возможно специфика приложения
ЕМ>Про библиотеки я в курсе, но мне пока нужно всего лишь подобрать размеры/положения элементов, чтоб не сильно съезжали при типовом масшабировании.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>В винде, как известно, есть проблема масштабирования диалогов... ЕМ>...в активном/отображенном диалоге, с последующим пересчетом позиций/размеров в DLU?
Вы всё ещё про диалоги. Неужиле для С++ ничего лучше MFC не придумали?
------------
Я бы не стал относить вопрос из сабжа к Win32 — это вопрос про MFC.
Всё сказанное выше — личное мнение, если не указано обратное.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Может, есть какой-нибудь софт, помогающий двигать элементы и менять их размер в активном/отображенном диалоге, с последующим пересчетом позиций/размеров в DLU?
А это кого-то, кроме тебя, беспокоит?
Re[7]: Программы для тестирования размеров элементов диалога
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>В чем разбираться? Для описанной задачи достаточно как-то указать требуемый элемент, и вызывать для него SetWindowPos. Даже в процесс встраиваться не нужно.
Ну и сделай
Re[2]: Программы для тестирования размеров элементов диалога
Здравствуйте, bnk, Вы писали:
bnk>AFAIK для воспроизведения большинства Win API (GDI) проблем с HiDPI нужен реальный 4к+ монитор к сожалению, без него их не воспроизвести...
У тебя видюха какая? Не пробовал виртуальные разрешения (забыл как правильно называются) от NVIDIA?
Я, кстати, гуй делал, но у меня никогда не было 4к монитора — даже не видел особой необходимости. И когда сдавал монитор с прошлой работы, крепко задумался о параметрах монитора для покупки на замену. По итогу не стал покупать 4к.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[7]: Программы для тестирования размеров элементов диалога
Здравствуйте, Философ, Вы писали:
bnk>>AFAIK для воспроизведения большинства Win API (GDI) проблем с HiDPI нужен реальный 4к+ монитор к сожалению, без него их не воспроизвести...
Ф>У тебя видюха какая? Не пробовал виртуальные разрешения (забыл как правильно называются) от NVIDIA?
Сейчас встройка AMD (Radeon 780). Но не думаю что есть разница.
Когда подключаешь монитор 4к, разница в том как редтерится WinAPI была видна просто невооруженным глазом. Я не знаю почему.
Ф>Я, кстати, гуй делал, но у меня никогда не было 4к монитора — даже не видел особой необходимости. И когда сдавал монитор с прошлой работы, крепко задумался о параметрах монитора для покупки на замену. По итогу не стал покупать 4к.
У меня тоже сейчас "обычное" (49" 5K), HiDPI 4K я уже продал
Потому тема и интересна, как эти проблемы воспроизвести.
Изменением масштаба у меня обрезание НЕ воспроизводится, все нормально масшатбируется.