Mirrel
> я выдернул эти строки из файла ресурсов. Результат нулевой.
а ты его вдёрнул куда-нибудь?
skalogryz
> а ты его вдёрнул куда-нибудь?
ха-ха, смешно.
По сути, я уже разобрался что к чему. Переделаю, посмотрим что получилось (оно и сейчас работает, но там правок куча появилась из-за всей этой переделки).
Mirrel
> По сути, я уже разобрался что к чему. Переделаю, посмотрим что получилось
...и что к чему?
ну т.е. отныне, ты просто не будешь отключать манифесты, и просто забудешь, что они там подключены, и всё будет работать всегда вне зависимости от dpi?
skalogryz, там не только DPI роль играет. В системе включается масштабирование, которое не переключает DPI. У меня как было 96, так и осталось при включении масштабирования.
Пока не вижу смысла в манифесте. Если он будет играть роль в каких-то приложениях, то возможно буду рассматривать манифесты (если других способов не будет).
skalogryz
Я таки скачал исходники чтобы заглянуть, что же там у Mirrel не так. И где на ровном месте он умудрился обосраться. А там оказывается эти УЖАСНЫЕ ненативные манифесты итак используются, но dpiaware просто выключен. Вот по дефолту у него как проекты настроены:
Естественно после запуска имеем это:
Переставляю галку там где я показывал, после пересборки проекта имеем это:
Вот теперь попробуй угадай где Миррел сумел обосраться...
MrShoor
> Вот теперь попробуй угадай где Миррел сумел обосраться...
для особо умных, скинул полный скрин. Но ты даже решил его не смотреть. Чем и показываешь, что срёшь ты, а не кто-то другой.
Ну и, если бы заглядывал в скрин, то может бы как раз собрал LCL проект для сравнения.
Mirrel
> для особо умных, скинул полный скрин. Но ты даже решил его не смотреть.
Для особо тупых:
Именно потому что я посмотрел твой полный скрин - я и пошел, скачал твой ZenGL, чтобы понять откуда у тебя при наличии манифеста окно получается большего размера. В демке твоего проекта я переключил один единственный комбобокс, и у меня всё заработало.
И именно поэтому я привел аж 3 скрина пруфов, и именно поэтому я вконце написал:
Вот теперь попробуй угадай где Миррел сумел обосраться...
Mirrel
> Чем и показываешь, что срёшь ты, а не кто-то другой.
у MrShoor-а ожидаемый результат.
Единственной настройкой масштабирование отключилось. 800*600 соответствует реальному размеру на экране. Картинка занимает всё пространство окна.
Что не так?
Mirrel
Тебе уже буквально пальцем тыкнули на конкретную кнопку, куда нажать, чтобы было збс. Не можешь нормально сказать "спасибо" — так хотя бы просто молча нажал бы эту злосчастную кнопку, а то так ты уже просто сам себе уши отмораживаешь.
Вы совсем с головой не дружите? Скрин смотрите! Там всё включено! Документацию читайте!
MrShoor
> Если ты пойдешь в справку по той же SetProcessDpiAwarenessContext : https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-wi… renesscontext
You must call this API before you call any APIs that depend on the DPI awareness (including before creating any UI in your process). Once API awareness is set for an app, any future calls to this API will fail. This is true regardless of whether you set the DPI awareness in the manifest or by using this API.
Как удобно да Шул? Самое важное-то можно было не писать, глядишь ни кто не заметит?
Mirrel
> Вы совсем с головой не дружите?
Это ты с головой не дружишь.
1. Говоришь, что на винде никак не отключить масштабирование. Я показываю как в один сраный клик его отключить.
2. Говоришь что у тебя манифестов нет. Я скачиваю твой ZenGL и вижу что они там есть (но просто dpiaware выключен).
3. Говорю, что SetProcessDpiAwarenessContext может не сработать. Ты его вызываешь, он не срабатывает, ты возмущаешься что он не работает
Кто еще с головой не дружит. Лол
MrShoor
> Говоришь, что на винде никак не отключить масштабирование. Я показываю как в один сраный клик его отключить.
смотри скрин! НЕ ОТКЛЮЧАЕТСЯ!!! Со зрением плохо?
> Говоришь что у тебя манифестов нет.
Если я их не использую - это равноценно что нет. Я ни как не управлял приложением используя манифесты. До спора с тобой я вообще не знал что в файл ресурсов запихивается манифест. Могу удалить и изменений не будет.
> Говорю, что SetProcessDpiAwarenessContext может не сработать.
так он работает! Там конкретно сказано, что его надо вызывать первым! До всех действий с приложением. И манифест в данном случае ни как не поможет, он просто не будет учитываться!
И вдовесок ко всему, по сути - это правильное поведение для ZenGL. Окно будет масштабировано, согласно включенному масштабированию, а всё что происходит в окне, будет зависеть только от ZenGL.
Mirrel
> смотри скрин! НЕ ОТКЛЮЧАЕТСЯ!!! Со зрением плохо?
Чтобы понять где ты обосрался в очередной раз - нужно больше информации, чем просто скрин
Mirrel
> Если я их не использую - это равноценно что нет. Я ни как не управлял приложением используя манифесты. До спора с тобой я вообще не знал что в файл ресурсов запихивается манифест.
Вот смотри, ты не управлял, не знал про манифесты, а я тебе про них рассказал, объяснил для чего они нужны, как их использовать. Вместо того чтобы просто ответить: "о, любопытно, не знал такого" и изучить сабж - ты начал доказывать что манифесты говно, это не нативно, у тебя их нет и не будет. Ты адекватен, как ты считаешь?
Mirrel
> Могу удалить и изменений не будет.
Всмысле не будет? Я тебе уже показал в скриншотах разницу.
Ах, сори, забыл что ты неадекватен. Ну можешь удалить, да. Кстати головушку свою тоже можешь удалить. Изменений так же не будет xD
Mirrel
> Там конкретно сказано, что его надо вызывать первым! До всех действий с приложением.
Я тебе уже объяснял чем это чревато. Ты НЕ можешь гарантировать, что ты его вызовешь первым, потому что до main-а тоже есть жизнь. А манифест это гарантирует, голова твоя садовая
MrShoor
> ты начал доказывать что манифесты говно, это не нативно, у тебя их нет и не будет.
эмм... (ответ ниже)
> Всмысле не будет?
без смысла... ты ещё и не читаешь что тебе пишут. А я писал, что применение манифеста ни как не влияет на работу уже изменённого ZenGL.
О чём так же сказано в документации, в строчке которую ты решил игнорировать.
> Ты НЕ можешь гарантировать, что ты его вызовешь первым, потому что до main-а тоже есть жизнь.
Я могу это гарантировать! Потому что я это делаю в приложении разрабатываемом мной, а не кем-то другим! И всё согласно документации!
You must call this API before you call any APIs that depend on the DPI awareness (including before creating any UI in your process).
зачем я тут бодаюсь? Я уже нашёл решение, вот не пофиг на ваше мнение?
Mirrel
> А я писал, что применение манифеста ни как не влияет на работу уже изменённого ZenGL.
Что такое измененный ZenGL?
Mirrel
> Я могу это гарантировать! Потому что я это делаю в приложении разрабатываемом мной, а не кем-то другим!
Не можешь, потому что еще до того как ты выполнишь строчку SetProcessDpiAwarenessContext в твой процесс уже загрузится куча других dll, и в каждой уже будет исполнен код мейна на PROCESS_ATTACH