ФлеймФорумСофт

Linux vs Windows [Holywar] (481 стр)

Страницы: 1480 481 482 483 484 Следующая »
#7200
(Правка: 0:48) 0:44, 17 окт 2024

MrShoor
> Я вот хочу, чтобы на моём 4К мониторе в твоих демках у меня не было пикселей размером с кулак
Включи сглаживание, они уменьшатся. По моему во всех демках сглаживание выключено (может в 7-й включено).

> 1. Масштабирование можно отключить
не отключается у меня, в чём я не прав?

> 2. Для этого есть конкретные механизмы (манифест)
посмотрим.

> У меня есть приложение, которое работает с отлкюченным масштабированием.
если оно мелкое, скинь, проверю и покажу, отключилось масштабирование или нет. Наверняка у тебя уже есть какая-то демка?

> Давай разберемся кто из нас сейчас ошибается.
ты упустил функцию, которая отвечает за масштабирование. Если масштабирование сделано не посредством изменения DPI, то работает функция GetScaleFactorForMonitor.

skalogryz
> отсутствие манифеста говорит системе, что перед ней гавно мамонта, которому нужна жёсткая поддержка
ну значит это говно мамонта. )))

#7201
0:46, 17 окт 2024

Mirrel
> Нет у меня ни каких манифестов и не будет. Да, я не спорю, что в некоторых ситуациях манифесты более быстро настраиваемы. Но нет, я хочу нативное решение.
Лол, манифест - это и есть нативное решение. Остальное все - полукостыли и в определенных случаях могут не работать.
Если ты пойдешь в справку по той же SetProcessDpiAwarenessContext : https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-wi… renesscontext

То там прям сразу написано:

Note

It is recommended that you set the process-default DPI awareness via application manifest, not an API call. See Setting the default DPI awareness for a process for more information. Setting the process-default DPI awareness via API call can lead to unexpected application behavior.

А еще есть описание:

This function returns TRUE if the operation was successful, and FALSE otherwise. To get extended error information, call GetLastError.

Possible errors are ERROR_INVALID_PARAMETER for an invalid input, and ERROR_ACCESS_DENIED if the default API awareness mode for the process has already been set (via a previous API call or within the application manifest).

Т.е. видно, что оно может и не сработать.
И даже если оно сегодня сработает, то завтра пользователь может запустить и оно может не сработать. На exe который не менялся. Просто потому что

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.

а в винде статическая линковка dll, и она могла "call any APIs that depend on the DPI awareness" еще на PROCESS_ATTACH сделать, и это будет ДО твоего SetProcessDpiAwarenessContext

Поэтому тру вей - разобраться с манифестами один раз, и делать через манифесты

Mirrel
> не отключается у меня, в чём я не прав?
В том, что ты делаешь это не правильно. Сделай через манифест и будет тебе счастье

#7202
0:52, 17 окт 2024

MrShoor
> В том, что ты делаешь это не правильно.
хороший вывод. ))) Если бы я следовал всем советам, то боюсь я бы до сих пор бился с Android.

  Правила нужны, чтоб их нарушали. ZenGL нарушает тучу правил, но все нарушения ведут только к одному, чтоб в конечном счёте для данной ОС правила выполнялись. Я следую рекомендациям, а не правилам.

#7203
0:55, 17 окт 2024

Mirrel
> если оно мелкое, скинь, проверю и покажу, отключилось масштабирование или нет. Наверняка у тебя уже есть какая-то демка?
Если тебе лично убедиться, что масштабирование отлключается - то есть проще рецепт. Создаешь пустое LCL приложение в лазарусе, и в настройках приложения идешь сюда и ставишь это:
awarness | Linux vs Windows [Holywar]
Это и будет решение через манифест

#7204
1:15, 17 окт 2024

MrShoor, для внутренностей окна, масштабирование отключено. Само окно масштабировано. Точнее, если типо создавалось окно 800 на 600 и в нем прямоугольник нарисовать 800 на 600, то за рамками прямоугольника появятся пустоты. А само окно будет больших размеров чем 800 на 600 (на величину масштабирования).

  Изначально я видел окно, что оно масштабировано. Сейчас я вижу что надо делать пересчёты дополнительные, если ещё и это масштабирование отключить. По сути, на то что происходит внутри, мне не важно, мне как раз важно что происходит снаружи - само окно.

#7205
1:21, 17 окт 2024

скриншот стоит 1000 слов

#7206
1:23, 17 окт 2024

Mirrel
> А само окно будет больших размеров чем 800 на 600 (на величину масштабирования).
Значит ты создал его до SetProcessDpiAwarenessContext. Сделай через манифест, и ничего не будет масштабироваться. Сколько попросишь создать, столько и будет создаваться.

> Сейчас я вижу что надо делать пересчёты дополнительные, если ещё и это масштабирование отключить.
Будешь сам делать перерасчеты - 100% обосрешься в каком-нибудь экзотическом случае. В чем проблема сделать нормально? Почему ты манифесты не хочешь подключать?

#7207
1:27, 17 окт 2024

MrShoor
> Почему ты манифесты не хочешь подключать?
это же опенсорц - ждёт пул реквеста :)

#7208
1:28, 17 окт 2024

skalogryz
> это же опенсорц - ждёт пул реквеста :)
Пул реквеста на что? На 7z архив? https://sourceforge.net/projects/new-zengl/

#7209
1:31, 17 окт 2024

MrShoor
https://github.com/Seenkao/New-ZenGL
на публичный архив... хотя бы.
а там уже спец утилиты с 7з архивом синхронизируются

#7210
1:35, 17 окт 2024

skalogryz
> https://github.com/Seenkao/New-ZenGL
> на публичный архив... хотя бы.
Я с пол года назад показал ему какую-то багу в его github версии ZenGL. Так он потом неделю глумился над тем, что я не актуальный ZenGL смотрю.

Ну и кстати на гитхабе вижу это: This repository has been archived by the owner on Sep 29, 2023. It is now read-only.
Не уверен что можно на такое пуллреквесты пилить

#7211
1:39, 17 окт 2024

MrShoor
> Почему ты манифесты не хочешь подключать?
потому что по сути они не нужны (мне). Они нужны (возможно) для каких-нибудь LCL приложений. У меня нативщина, которая (по большей части) не зависит от LCL. Мне достаточно развернуть окно во всё окно и OpenGL всё сделает за меня (если расчёты верные будут, но тут уже не от масштабирования зависит).
  И, если я сделаю это нативно, то я ни от кого зависеть не буду.

конечно буду, в очередной раз Винда подсунет какой-нибудь колхоз, который ломает ранее созданные ей же основы. И снова придётся "втыкать заглушки" - точнее править ту фигню, что они налепили.

#7212
1:52, 17 окт 2024

Mirrel
> И, если я сделаю это нативно, то я ни от кого зависеть не буду.
хм... а ты можешь их подключить ради MrShoor эксперимента
заскринить результат до подключения
а потом после подключения?!

ты столько всяких дебрей прошёл с этими Ведройдами и Линухами, а тут просто дропдаун выбрать в шаблоне проекта Лазаруса.

#7213
1:58, 17 окт 2024

MrShoor
> Манифест - это и есть нативно. Чем тебе не нативно то?
потому что нативно - это когда сама программа знает как всё правильно делать. Когда программа начинает обращаться к сторонним ресурсам для запросов, это уже не нативщина.

да, я знаю, что даже исполняемый код делает запросы системе и иногда далеко "не нативные".

  Использование внешних файлов всегда допускается, когда с внешними файлами проще работать. Манифест, не несёт для меня ни какого существенного упрощения.

  Так же, я проверил и манифесты с нативной программой, не помогают. Окно так же остаётся масштабированным.

skalogryz
> а тут просто дропдаун выбрать в шаблоне проекта Лазаруса.
я выдернул эти строки из файла ресурсов. Результат нулевой.

#7214
2:06, 17 окт 2024

Mirrel
> Когда программа начинает обращаться к сторонним ресурсам для запросов, это уже не нативщина.
Тебе не нужно обращаться к этим сторонним ресурсам для каких то запросов. Манифест - это описание для windows, чтобы windows знала как работать с твоей программой. И windows должен понять, что ты умеешь работать и сам всё правильно сделаешь (ты ведь этого и хочешь, сделать всё самостоятельно). И чтобы windows понял - тебе и нужен манифест.

> Использование внешних файлов всегда допускается, когда с внешними файлами проще работать.
Тебе не нужно работать с манифестом. Тебе нужно просто положить его в ресурсы и всё. Компилятор соберет эти ресурсы в exe. Всё что тебе требуется - это настроить нормально сборку. Один раз. И всё.

> Манифест, не несёт для меня ни какого существенного упрощения.
Ну конечно. Бодаться и пересчитывать всё обратно, что винда насчитала тебе из-за отсутствующего манифеста - это не упрощение.

> Так же, я проверил и манифесты с нативной программой, не помогают. Окно так же остаётся масштабированным.
Значит что-то ты сделал не так. Всем помогают, а тебе лично не помогают. Как так?

Страницы: 1480 481 482 483 484 Следующая »
ФлеймФорумСофт