Контролы без поддержки ОС
От: maks1180  
Дата: 02.05.21 20:40
Оценка:
Хочу сделать (или найти) следующую реализацию контролов:
1) Приложение НЕ будет создавать контрол через Windows API, т.е. ОС не будет знать состав контролов этого окна
2) вместо Windows, приложение само будет раскидывать сообщения по дочерным окнам (контролам).

Плюсы:
1) потом планирую портировать приложение под Linux и Mac, думаю с таким подходом будет проще портировать
и тестировать нужно будет только для 1 ОС полностью, а для остальных ОС только частично.
2) будет выглядеть и вести себя одинаково вне зависимости от ОС и версии ОС.
3) можно обойтись без тяжелых фреймворков, таких как QT
4) ОС не будет знать состав контролов этого окна. Хакерам будет сложнее.

Какие минусы у данного подхода ?
Существуют ли такие реализации ?
===============================================
(реклама, удалена модератором)
Отредактировано 02.05.2021 20:42 maks1180 . Предыдущая версия . Еще …
Отредактировано 02.05.2021 20:42 maks1180 . Предыдущая версия .
Re: Контролы без поддержки ОС
От: Михaил  
Дата: 02.05.21 21:06
Оценка: +6
Здравствуйте, maks1180, Вы писали:

M>Хочу сделать (или найти) следующую реализацию контролов:

M>1) Приложение НЕ будет создавать контрол через Windows API, т.е. ОС не будет знать состав контролов этого окна
M>2) вместо Windows, приложение само будет раскидывать сообщения по дочерным окнам (контролам).

M>Какие минусы у данного подхода ?

M>Существуют ли такие реализации ?

Qt?
Re[2]: Контролы без поддержки ОС
От: maks1180  
Дата: 02.05.21 21:08
Оценка:
М>Qt?

Разве он так умеет ?
===============================================
(реклама, удалена модератором)
Re: Контролы без поддержки ОС
От: RonWilson Россия  
Дата: 02.05.21 21:25
Оценка: +9
Здравствуйте, maks1180, Вы писали:

M>Какие минусы у данного подхода ?

Вместо работы на полезными функциями будет работа над этими контролами, да которых, по сути, никому нет никакого дела — сделаны они нативно или вот так.

M>Существуют ли такие реализации ?

Можно взять любую оконную библиотеку эпохи MSDOS и портировать под нужную ОС (рисование, обработка манимуалятора типа "мышь"), выглядеть будет ээ, соотвествующе.
Re[3]: Контролы без поддержки ОС
От: Zhendos  
Дата: 02.05.21 21:29
Оценка: +3
Здравствуйте, maks1180, Вы писали:

М>>Qt?


M>Разве он так умеет ?


Он именно так и работает.
Re[2]: Контролы без поддержки ОС
От: Zhendos  
Дата: 02.05.21 21:31
Оценка: +1
Здравствуйте, RonWilson, Вы писали:

M>>Существуют ли такие реализации ?

RW>Можно взять любую оконную библиотеку эпохи MSDOS и портировать под нужную ОС (рисование, обработка манимуалятора типа "мышь"), выглядеть будет ээ, соотвествующе.

Соотвестующе круто конечно имелось ввиду. Вот кстати нужная библиотека https://github.com/magiblot/tvision
Re[3]: Контролы без поддержки ОС
От: Михaил  
Дата: 02.05.21 22:57
Оценка:
Здравствуйте, maks1180, Вы писали:

М>>Qt?


M>Разве он так умеет ?


Да. Плюсы — кросплатформенность малой кровью, отличная кастомизируемость стилями, минусы — не до конца нативное поведение таких контролов.
Еще есть sciter (тоже сам рисует, html, css и c++) и для ныне популярный рисующий в хромиуме (не с++) electron (js, html, css)
Re[3]: Контролы без поддержки ОС
От: denis.st Россия  
Дата: 02.05.21 23:46
Оценка: -1
RW>>Можно взять любую оконную библиотеку эпохи MSDOS и портировать под нужную ОС (рисование, обработка манимуалятора типа "мышь"), выглядеть будет ээ, соотвествующе.

Z>Соотвестующе круто конечно имелось ввиду. Вот кстати нужная библиотека https://github.com/magiblot/tvision


именно. как крутое, олдскульно-душещипательное говно
Re: Контролы без поддержки ОС
От: denis.st Россия  
Дата: 02.05.21 23:49
Оценка: +1
M>1) ... и тестировать нужно будет только для 1 ОС полностью, а для остальных ОС только частично.
M>2) будет выглядеть и вести себя одинаково вне зависимости от ОС и версии ОС.
M>Какие минусы у данного подхода ?
в том, что наверняка юзеры будут плеваться от поведения этих "кроссплатформенных" контроллов, и их придётся долго и упорно допиливать на каждой поддержанной платформе, добавляя самостийные плюшки
Re: Контролы без поддержки ОС
От: DenisCh Россия  
Дата: 03.05.21 02:21
Оценка:
Здравствуйте, maks1180, Вы писали:

M>Хочу сделать (или найти) следующую реализацию контролов:

M>1) Приложение НЕ будет создавать контрол через Windows API, т.е. ОС не будет знать состав контролов этого окна
M>2) вместо Windows, приложение само будет раскидывать сообщения по дочерным окнам (контролам).

M>Существуют ли такие реализации ?


Ага. 1сV8, например. Запусти её и посмотри винспаем её контролы...
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re: accessibility & usability
От: watchmaker  
Дата: 03.05.21 02:50
Оценка: 23 (7) +15
О, как раз сейчас многие приложения обзаводятся интерфейсом на html+js (и браузерным движком чтобы всё неспешно рендрить ). Само по себе это терпимо, пока кто-то не начинает для пущей "кроссплатформенности" не использовать контролы браузера (они же не такие красивые как хочется), а самому рисовать кнопки (накладывая на условный div нужный стиль) и потом в js обрабатывать клики на них.

И действительно, не проблема нарисовать кнопку, по которой можно кликнуть мышкой.
Проблемы начинаются дальше. Оказывается, что для удобной работы с приложением этого недостаточно.
Ладно, для последнего пункта ещё можно понять почему человек без близорукости может забыть про голосовое управление — ведь он им ни разу не пользовался. Но похоже это та же причина, по которой в подобных интерфейсах постоянно повторяются одни и те же ошибки с неработающими стандартными комбинациями клавиш, — видимо автор также не знал или забыл о них. А сценарий "нажали на кнопку мышкой" отлично прошёл тестирование. Но что будет, если одновременно нажать Ctrl или использовать мультитач не проверялось — автор библиотеки так не делал, значит и пользователь хотеть не должен.

В общем, нарисовать контрол очень просто. Сложно сделать его удобным и совместимым со всеми средствами ввода и вывода.
Re: Контролы без поддержки ОС
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 03.05.21 04:09
Оценка:
Здравствуйте, maks1180, Вы писали:

M>Существуют ли такие реализации ?


imgui. Хорошая бибилотека — 30к звёзд на гитхабе так просто не появляются.
Re[2]: accessibility & usability
От: maks1180  
Дата: 03.05.21 09:57
Оценка:
W>
  • Например, люди при работа с текстом перемещаются между контролами с использованием клавиатуры, но для этого нужно сделать tab index.
    Нужно сделать, но это не сложно.

    W>
  • Скопировать текст ошибки из окна в буфер обмена? Стандартный диалог так умеет. А для кастомного нужно снова код писать. Или пользователю придётся вручную перенабирать текст.
    Это да, нужно делать.

    W>
  • Забыли в своём коде отрисовки учесть DPI? Приложение выглядит мелко/крупно. И вообще есть проблемы с масштабированием.
    Это в любом случаи нужно делать иначе, ОС сама растянет окно и будет плохо это выглядеть.

    W>
  • Стиль приложения может и единый, но зато в каждой ОС выглядит чужеродно.
    Например TeamViewer — они сделали нативные контролы в MacOS, но в Windows они нарисовали такие же как в MacOS — выглядит неплохо (по моему мнению).

    W>
  • Адок с accessibility в широком смысле слова: например, содержимое нативных контролов ОС можно прочитать и ими можно управлять голосом. Если ты забыл написать соответствующий код, то в лучшем случае услышишь от своего приложения что-то вроде "номер вашего заказа <order.png>"
    Вот это я НЕ учёт, спасибо
  • ===============================================
    (реклама, удалена модератором)
    Re[2]: Контролы без поддержки ОС
    От: Mr.Delphist  
    Дата: 05.05.21 08:34
    Оценка: 1 (1)
    Здравствуйте, DenisCh, Вы писали:

    DC>Ага. 1сV8, например. Запусти её и посмотри винспаем её контролы...


    Ну и WPF/UWP/XAML в ту же копилку — всё owner-draw и ровно один HWND на окно
    Re[2]: accessibility & usability
    От: ути-пути Россия  
    Дата: 06.05.21 14:43
    Оценка: +2
    Здравствуйте, watchmaker, Вы писали:

    W>Но похоже это та же причина, по которой в подобных интерфейсах постоянно повторяются одни и те же ошибки с неработающими стандартными комбинациями клавиш


    Задолбало. Куча десктопного софта, где не работают в текстовых полях C-Ins, S-Ins, S-Del.
    Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
    Re[3]: accessibility & usability
    От: Евгений Музыченко Франция https://software.muzychenko.net/ru
    Дата: 06.05.21 16:08
    Оценка: +2
    Здравствуйте, ути-пути, Вы писали:

    УП>Задолбало. Куча десктопного софта, где не работают в текстовых полях C-Ins, S-Ins, S-Del.


    Зато стильномодномолодежно.
    Re: Контролы без поддержки ОС
    От: reversecode google
    Дата: 06.05.21 16:50
    Оценка:
    https://github.com/fffaraz/awesome-cpp#gui
    Re: Контролы без поддержки ОС
    От: cppguard  
    Дата: 06.05.21 22:19
    Оценка:
    Здравствуйте, maks1180, Вы писали:

    M>4) ОС не будет знать состав контролов этого окна. Хакерам будет сложнее.


    Security through obscurity? На самом нижнем слое всё равно придётся работать с системными сообщениями от мыши и клавиатуры, и obscurity будет насмарку.
    Re: Контролы без поддержки ОС
    От: Nikolaz Германия www.nikeware.com
    Дата: 17.06.21 07:15
    Оценка:
    Здравствуйте, maks1180, Вы писали:

    M>Существуют ли такие реализации ?

    sciter.com ?
    Re[3]: Контролы без поддержки ОС
    От: maks1180  
    Дата: 24.09.21 05:40
    Оценка:
    MD>Ну и WPF/UWP/XAML в ту же копилку — всё owner-draw и ровно один HWND на окно

    это .NET относиться ?
    ===============================================
    (реклама, удалена модератором)
    Re[2]: Контролы без поддержки ОС
    От: maks1180  
    Дата: 24.09.21 05:56
    Оценка:
    N>imgui. Хорошая бибилотека — 30к звёзд на гитхабе так просто не появляются.

    спасибо. Вы ей пользовались ? Она через DirectX рисует контролы ? Не пойму через что она в Linux будет рисовать и будет ли вообще ?
    ===============================================
    (реклама, удалена модератором)
    Отредактировано 24.09.2021 6:07 maks1180 . Предыдущая версия . Еще …
    Отредактировано 24.09.2021 6:04 maks1180 . Предыдущая версия .
    Re[3]: accessibility & usability
    От: LaptevVV Россия  
    Дата: 24.09.21 06:01
    Оценка:
    W>>Но похоже это та же причина, по которой в подобных интерфейсах постоянно повторяются одни и те же ошибки с неработающими стандартными комбинациями клавиш
    УП>Задолбало. Куча десктопного софта, где не работают в текстовых полях C-Ins, S-Ins, S-Del.
    Абсолютно согласен!
    Хочешь быть счастливым — будь им!
    Без булдырабыз!!!
    Re[3]: Контролы без поддержки ОС
    От: Nuzhny Россия https://github.com/Nuzhny007
    Дата: 24.09.21 07:25
    Оценка:
    Здравствуйте, maks1180, Вы писали:

    M>спасибо. Вы ей пользовались ? Она через DirectX рисует контролы ? Не пойму через что она в Linux будет рисовать и будет ли вообще ?


    Когда-то для простого дебажного вывода использовал, для себя.

    Officially maintained backends/bindings (in repository):

    Renderers: DirectX9, DirectX10, DirectX11, DirectX12, Metal, OpenGL/ES/ES2, SDL_Renderer, Vulkan, WebGPU.
    Platforms: GLFW, SDL2, Win32, Glut, OSX, Android.
    Frameworks: Emscripten, Allegro5, Marmalade.

    Re[4]: Контролы без поддержки ОС
    От: Mr.Delphist  
    Дата: 24.09.21 07:57
    Оценка:
    Здравствуйте, maks1180, Вы писали:

    M>это .NET относиться ?


    Да, но нет. Под капотом там помесь Win32 API, GDI+ и DirectX, а первые попытки Windowless controls были ещё в Win9x (вот с этим я бодался в районе 2003-2004 https://docs.microsoft.com/en-us/windows/win32/controls/windowless-rich-edit-controls, документации тогда было полторы страницы в MSDN)
    Re[2]: accessibility & usability
    От: saf_e  
    Дата: 24.09.21 08:17
    Оценка:
    Здравствуйте, watchmaker, Вы писали:

    W>
    Ну и в копилку все стандартные контролы так или иначе доступны с клавиатуры, т.е. не только Tab, а и навигация стрелками, поиск в treeview/combobox и т.п.
    Re: Контролы без поддержки ОС
    От: saf_e  
    Дата: 24.09.21 08:20
    Оценка:
    Здравствуйте, maks1180, Вы писали:

    M>Хочу сделать (или найти) следующую реализацию контролов:

    M>1) Приложение НЕ будет создавать контрол через Windows API, т.е. ОС не будет знать состав контролов этого окна
    M>2) вместо Windows, приложение само будет раскидывать сообщения по дочерным окнам (контролам).

    M>Какие минусы у данного подхода ?

    M>Существуют ли такие реализации ?

    В свое время у одной конторы были кастомные контролы (делали совместимость с маком). Потом на мак забили, а под винду долго перепиливали на стандартные.

    Кроме уже озвученых причин, так же еще и поддержка тем: всякие контрастные, увеличенные и т.п. В основном это все актуально для слабовидящих.
    Re[2]: accessibility & usability
    От: Mystic Artifact  
    Дата: 30.09.21 20:33
    Оценка:
    Здравствуйте, watchmaker, Вы писали:

    Это полный бред. Все современные браузерные движки поддерживают AX на высшем уровне. Сайтики не размечают стпаницы правильно — это другой вопрос.
    Re: Контролы без поддержки ОС
    От: Pzz Россия https://github.com/alexpevzner
    Дата: 20.11.21 18:31
    Оценка:
    Здравствуйте, maks1180, Вы писали:

    M>Плюсы:

    M>1) потом планирую портировать приложение под Linux и Mac, думаю с таким подходом будет проще портировать
    M>и тестировать нужно будет только для 1 ОС полностью, а для остальных ОС только частично.

    Это очень большой объем труда, если ты хочешь получить нормальный набор контролов нормального промышленного качества, а не детсадовскую поделку.

    M>2) будет выглядеть и вести себя одинаково вне зависимости от ОС и версии ОС.


    Это скорее недостаток, чем достоинство.

    M>3) можно обойтись без тяжелых фреймворков, таких как QT


    Когда-то все тяжелые фреймворки из таких примерно поделок и выросли.

    M>4) ОС не будет знать состав контролов этого окна. Хакерам будет сложнее.


    На нормальном дектопе можно одной настройкой поменять отрисовку всем приложениям. Например, сделать шрифт везде покрупнее. Если ты сам за себя, тебе придется или сделать это самому (причем для каждой системы), или твоя программа будет выделяться, причем не в лучшую сторону.
    Re[2]: Контролы без поддержки ОС
    От: maks1180  
    Дата: 10.12.21 20:43
    Оценка:
    M>>2) будет выглядеть и вести себя одинаково вне зависимости от ОС и версии ОС.

    Pzz>Это скорее недостаток, чем достоинство.


    Все антивирусы, которые я видел, и так же телеграмм. Выглядят на всех ОС одинакого, чужеродно. Что в этом плохо ?
    ===============================================
    (реклама, удалена модератором)
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.