Программы для тестирования размеров элементов диалога
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 29.12.24 10:33
Оценка:
В винде, как известно, есть проблема масштабирования диалогов: когда система растягивает диалог для отображения в масштабе больше 100%, размеры элементов приходится округлять, из-за чего они нередко отображаются неправильно (чаще всего пропадают последние буквы static text).

Подбирать размеры/расстояния, изменяя их в редакторе, собирая приложение, и запуская его в сеансе с масштабированием, долго и муторно, а включать масштабирование в рабочем сеансе — стремно.

Может, есть какой-нибудь софт, помогающий двигать элементы и менять их размер в активном/отображенном диалоге, с последующим пересчетом позиций/размеров в DLU?
Re: Программы для тестирования размеров элементов диалога
От: kov_serg Россия  
Дата: 29.12.24 10:45
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>В винде, как известно, есть проблема масштабирования диалогов: когда система растягивает диалог для отображения в масштабе больше 100%, размеры элементов приходится округлять, из-за чего они нередко отображаются неправильно (чаще всего пропадают последние буквы static text).


ЕМ>Подбирать размеры/расстояния, изменяя их в редакторе, собирая приложение, и запуская его в сеансе с масштабированием, долго и муторно, а включать масштабирование в рабочем сеансе — стремно.


ЕМ>Может, есть какой-нибудь софт, помогающий двигать элементы и менять их размер в активном/отображенном диалоге, с последующим пересчетом позиций/размеров в DLU?


Тебе не понравиться — WebView
Re[2]: Программы для тестирования размеров элементов диалога
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 29.12.24 10:48
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Тебе не понравиться — WebView


А куда там лошадь запрягать WinAPI прикручивать?
Re[3]: Программы для тестирования размеров элементов диалога
От: kov_serg Россия  
Дата: 29.12.24 15:18
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

_>>Тебе не понравиться — WebView


ЕМ>А куда там лошадь запрягать WinAPI прикручивать?

Как куда прямо на диалог кладёте ActiveX и алга

https://learn.microsoft.com/en-us/cpp/mfc/reference/creating-a-web-browser-style-mfc-application?view=msvc-170
https://learn.microsoft.com/en-us/cpp/mfc/reference/chtmlview-class?view=msvc-170
https://www.codeproject.com/Articles/7710/Creating-Web-style-GUI-in-MFC-applications
Re[4]: Программы для тестирования размеров элементов диалога
От: Alekzander  
Дата: 29.12.24 16:53
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>https://learn.microsoft.com/en-us/cpp/mfc/reference/creating-a-web-browser-style-mfc-application?view=msvc-170

_>https://learn.microsoft.com/en-us/cpp/mfc/reference/chtmlview-class?view=msvc-170
_>https://www.codeproject.com/Articles/7710/Creating-Web-style-GUI-in-MFC-applications

Но это будет устаревшее говно 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]: Программы для тестирования размеров элементов диалога
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 29.12.24 17:42
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>прямо на диалог кладёте ActiveX и алга


Мне бы хотелось именно того, что я изначально описал. Это ж не только для своего — есть и другие приложения, которые портятся при масштабировании.

Есть такое, или никто не сподобился?
Re[5]: Программы для тестирования размеров элементов диалога
От: kov_serg Россия  
Дата: 29.12.24 20:58
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Мне бы хотелось именно того, что я изначально описал. Это ж не только для своего — есть и другие приложения, которые портятся при масштабировании.


ЕМ>Есть такое, или никто не сподобился?


А всем лень разбираться. Там же и масштабирование экранов и dpi видео драйвера и размеры шрифтов плюс костыли для совместимости и ещё сверху бантик с манифестами.
И всё это вместо банальной фунции получения физических размеров в мм

https://mariusbancila.ro/blog/2021/05/19/how-to-build-high-dpi-aware-native-desktop-applications/
Отредактировано 29.12.2024 21:29 kov_serg . Предыдущая версия .
Re[5]: Программы для тестирования размеров элементов диалога
От: bnk СССР http://unmanagedvisio.com/
Дата: 29.12.24 21:31
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Мне бы хотелось именно того, что я изначально описал. Это ж не только для своего — есть и другие приложения, которые портятся при масштабировании.

ЕМ>Есть такое, или никто не сподобился?

AFAIK для воспроизведения большинства Win API (GDI) проблем с HiDPI нужен реальный 4к+ монитор к сожалению, без него их не воспроизвести. Если нет — идти в магазин на амазон и покупать.
С ним они элементарно воспроизводятся просто установкой масштаба. Студия умеет переключаться (devenv /noscale). С "обычным" монитором эти проблемы не воспроизводятся, какой бы ты масштаб ни ставил.
Насколько я понял, поскольку проблемы зарыты в системе, пользовательского софта для их эмуляции AFAIK нет (я искал)

Если заинтересует WebView2, у него есть нормальный WINAPI C++ интерфейс (он первичен на самом деле). Встроен в систему начиная с Win11
https://learn.microsoft.com/en-us/microsoft-edge/webview2/get-started/win32

ActiveX (Web Browser Control) устарел на 20 лет, там IE11 максимум (да и тот с приседаниями), на котором уже ничего практически не работает.
Это не учитывая проблемы которые всегда были (типа ActiveX security warning)

CEF тебе скорее всего не понравится (50мб на ровном месте за здорово живешь)

Sciter (здесь) в принципе норм, я на нем делал UI, небольшой и достаточно удобный для плюсов,
минус тот, что почти все современные готовые javasript web-ui библиотеки на нем не работают (даже jQuery)
Андрей упирался рогом годами со своим tiscript, ну вот и результат. Невозможно объять необъятное.
Отредактировано 29.12.2024 22:05 bnk . Предыдущая версия . Еще …
Отредактировано 29.12.2024 22:02 bnk . Предыдущая версия .
Отредактировано 29.12.2024 22:01 bnk . Предыдущая версия .
Отредактировано 29.12.2024 21:59 bnk . Предыдущая версия .
Отредактировано 29.12.2024 21:58 bnk . Предыдущая версия .
Отредактировано 29.12.2024 21:54 bnk . Предыдущая версия .
Отредактировано 29.12.2024 21:49 bnk . Предыдущая версия .
Отредактировано 29.12.2024 21:48 bnk . Предыдущая версия .
Отредактировано 29.12.2024 21:48 bnk . Предыдущая версия .
Отредактировано 29.12.2024 21:36 bnk . Предыдущая версия .
Отредактировано 29.12.2024 21:35 bnk . Предыдущая версия .
Отредактировано 29.12.2024 21:33 bnk . Предыдущая версия .
Re: Программы для тестирования размеров элементов диалога
От: TheBeginner  
Дата: 30.12.24 08:42
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>В винде, как известно, есть проблема масштабирования диалогов: когда система растягивает диалог для отображения в масштабе больше 100%, размеры элементов приходится округлять, из-за чего они нередко отображаются неправильно (чаще всего пропадают последние буквы static text).


Эх, Win32 и его "поддержка" High DPI. Мало того, что надо все ручками делать, например, если рисовать GDI линию в один пиксел, то на масштабе до 150 рисуем в один пиксел, от 150 до 249 — в два и тд., самому изменить размеры окон, выбирать нужный набор графики (если растровая) под каждый масштаб, так еще диалоги живут своей жизнью, так как там не пикселы, а dialog units или как их там

Посмотрите на XUILIB от нашего форумчанина:
https://github.com/tordex/xuilib

Там как раз есть изменение размера контролов при изменении текста в них.

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]: Программы для тестирования размеров элементов диалога
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 30.12.24 19:59
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>всем лень разбираться.


В чем разбираться? Для описанной задачи достаточно как-то указать требуемый элемент, и вызывать для него SetWindowPos. Даже в процесс встраиваться не нужно.
Re[6]: Программы для тестирования размеров элементов диалога
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 30.12.24 20:03
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>AFAIK для воспроизведения большинства Win API (GDI) проблем с HiDPI нужен реальный 4к+ монитор к сожалению, без него их не воспроизвести.


Чем реальный монитор отличается от виртуального экрана VM? Монитор-то никак не обрабатывает изображение.

bnk>С ним они элементарно воспроизводятся просто установкой масштаба.


Те проблемы, о которых я писал, элементарно воспроизводятся на любом экране, хоть реальном, хоть виртуальном, установкой масштаба 125%.

Про библиотеки я в курсе, но мне пока нужно всего лишь подобрать размеры/положения элементов, чтоб не сильно съезжали при типовом масшабировании.
Re[2]: Программы для тестирования размеров элементов диалога
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 30.12.24 20:06
Оценка:
Здравствуйте, TheBeginner, Вы писали:

TB>если рисовать GDI линию в один пиксел, то на масштабе до 150 рисуем в один пиксел, от 150 до 249 — в два и тд.


Не понял. Что значит "линию в один пиксел" — указывать единичную ширину в функциях рисования, или чтоб она занимала один пиксел на экране?

, самому изменить размеры окон, выбирать нужный набор графики (если растровая) под каждый масштаб, так еще диалоги живут своей жизнью, так как там не пикселы, а dialog units или как их там

TB>Посмотрите на XUILIB от нашего форумчанина:


Спасибо, погляжу.
Re[7]: Программы для тестирования размеров элементов диалога
От: bnk СССР http://unmanagedvisio.com/
Дата: 30.12.24 20:10
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

bnk>>AFAIK для воспроизведения большинства Win API (GDI) проблем с HiDPI нужен реальный 4к+ монитор к сожалению, без него их не воспроизвести.


ЕМ>Чем реальный монитор отличается от виртуального экрана VM? Монитор-то никак не обрабатывает изображение.


bnk>>С ним они элементарно воспроизводятся просто установкой масштаба.


ЕМ>Те проблемы, о которых я писал, элементарно воспроизводятся на любом экране, хоть реальном, хоть виртуальном, установкой масштаба 125%.


У меня не воспроизводились, поэтому и говорю. Возможно специфика приложения

ЕМ>Про библиотеки я в курсе, но мне пока нужно всего лишь подобрать размеры/положения элементов, чтоб не сильно съезжали при типовом масшабировании.


Если у тебя самодостаточное приложение (EXE а не DLL), может тебе просто в манифест прописать что надо
https://learn.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows
Отредактировано 30.12.2024 20:11 bnk . Предыдущая версия .
Re[2]: Программы для тестирования размеров элементов диалога
От: Философ Ад http://vk.com/id10256428
Дата: 30.12.24 21:32
Оценка:
Здравствуйте, TheBeginner, Вы писали:

TB>Эх, Win32 и его "поддержка" High DPI. Мало того, что надо все ручками делать...


Причём тут Win32 и зачем всё делать руками?
Неуж-то Win32 ограничивается GDI?
Всё сказанное выше — личное мнение, если не указано обратное.
Re: Программы для тестирования размеров элементов диалога
От: Философ Ад http://vk.com/id10256428
Дата: 30.12.24 21:35
Оценка: -1
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>В винде, как известно, есть проблема масштабирования диалогов...

ЕМ>...в активном/отображенном диалоге, с последующим пересчетом позиций/размеров в DLU?

Вы всё ещё про диалоги. Неужиле для С++ ничего лучше MFC не придумали?

------------
Я бы не стал относить вопрос из сабжа к Win32 — это вопрос про MFC.
Всё сказанное выше — личное мнение, если не указано обратное.
Отредактировано 30.12.2024 21:42 Философ . Предыдущая версия .
Re: Программы для тестирования размеров элементов диалога
От: пффф  
Дата: 30.12.24 21:42
Оценка: -1 :)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Может, есть какой-нибудь софт, помогающий двигать элементы и менять их размер в активном/отображенном диалоге, с последующим пересчетом позиций/размеров в DLU?


А это кого-то, кроме тебя, беспокоит?
Re[7]: Программы для тестирования размеров элементов диалога
От: пффф  
Дата: 30.12.24 21:43
Оценка: -1 :)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>В чем разбираться? Для описанной задачи достаточно как-то указать требуемый элемент, и вызывать для него SetWindowPos. Даже в процесс встраиваться не нужно.



Ну и сделай
Re[2]: Программы для тестирования размеров элементов диалога
От: пффф  
Дата: 30.12.24 21:46
Оценка: -1 :)
Здравствуйте, TheBeginner, Вы писали:

TB>Посмотрите на XUILIB от нашего форумчанина:



Хуйлиб? Хм... Звучит интересно...
Re[6]: Программы для тестирования размеров элементов диалога
От: Философ Ад http://vk.com/id10256428
Дата: 30.12.24 21:47
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>AFAIK для воспроизведения большинства Win API (GDI) проблем с HiDPI нужен реальный 4к+ монитор к сожалению, без него их не воспроизвести...


У тебя видюха какая? Не пробовал виртуальные разрешения (забыл как правильно называются) от NVIDIA?
Я, кстати, гуй делал, но у меня никогда не было 4к монитора — даже не видел особой необходимости. И когда сдавал монитор с прошлой работы, крепко задумался о параметрах монитора для покупки на замену. По итогу не стал покупать 4к.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[7]: Программы для тестирования размеров элементов диалога
От: bnk СССР http://unmanagedvisio.com/
Дата: 30.12.24 21:55
Оценка:
Здравствуйте, Философ, Вы писали:

bnk>>AFAIK для воспроизведения большинства Win API (GDI) проблем с HiDPI нужен реальный 4к+ монитор к сожалению, без него их не воспроизвести...


Ф>У тебя видюха какая? Не пробовал виртуальные разрешения (забыл как правильно называются) от NVIDIA?


Сейчас встройка AMD (Radeon 780). Но не думаю что есть разница.
Когда подключаешь монитор 4к, разница в том как редтерится WinAPI была видна просто невооруженным глазом. Я не знаю почему.

Ф>Я, кстати, гуй делал, но у меня никогда не было 4к монитора — даже не видел особой необходимости. И когда сдавал монитор с прошлой работы, крепко задумался о параметрах монитора для покупки на замену. По итогу не стал покупать 4к.


У меня тоже сейчас "обычное" (49" 5K), HiDPI 4K я уже продал

Потому тема и интересна, как эти проблемы воспроизвести.
Изменением масштаба у меня обрезание НЕ воспроизводится, все нормально масшатбируется.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.