Re[2]: Связка C/C++ и WinAPI - ещё актуальна?
От: sergey2b ЮАР  
Дата: 25.11.19 11:19
Оценка: 27 (2) :))) :)
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>

Технологическая сингулярность — явление, означающее ускорение научно-технического прогресса до такой степени, что прежнее органическое население больше не в состоянии участвовать в нём или хотя бы осознавать


это вы про JS и Python
Re[3]: Связка C/C++ и WinAPI - ещё актуальна?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 25.11.19 11:31
Оценка: 9 (2)
Здравствуйте, sergey2b, Вы писали:

S>это вы про JS и Python


Кажется, что в плюсах происходит сейчас сингулярность покруче, чем в JS и Python. Сейчас ещё модули выйдут и язык можно даже не узнать, глядя на гитхабовский репозиторий. Да и сейчас иногда приходится сидеть и медитировать, чтобы понять предназначение той или иной функции.
Re: Связка C/C++ и WinAPI - ещё актуальна?
От: CEMb  
Дата: 25.11.19 12:00
Оценка:
Почитал ветку. Загрустил.

- Привет, меня зовут Семён
— Привет, Семён, привет, привет, привет,,,
— Я пишу на С++ и на WinAPI


Видимо, я один тут пишу на C++/WinAPI большие десктопные проекты и наслаждаюсь этим
Мне плюсы нравятся больше шарпа, тут вопросов, наверно, не возникнет.

Теперь про WinAPI. Главная мысль ТС была именно про GUI, так ведь? Моё личное убеждение (которому я иногда даже 100% следую) — отделение в коде UI в прослойку. В идеале я вообще сначала пишу консольное приложение с командами (да, я такой), потом сверху обкладываю это более высоким UI.

Почему я не беру QT? В своё время QT был платный, у него была странная IDE, странная манера без спроса инсталлироваться прям в корень, тяжёлые приложения (рантайм на борту). В общем, не пожилось. Кроме того, у меня все юзеры под виндой, мне кроссплатформа не нужна, поэтому переносить/писать заново много кода ради кроплатформенности — никому не нужно. Мне всё ещё охота посмотреть Qt, и может быть даже всё писать на нём, я не знаю, очень может быть, что это правильное решение. Но, блин, я работаю в очень большой конторе, мне надо будет как-то обосновать для нашей медленной бюрократии, чтобы мне выдали лицензии и возможность делать софт в промышленных масштабах.

Я не помню, чтобы у меня были какие-то проблемы с WinAPI. При этом я вот сейчас не уверен, что Qt без лишних проблем быстро умеет работать в лист размером в 1 млн записей(это вот прям сщас реальная задача). Нет, если сможет, то всё ок. А если я сейчас переведу код на Qt, а потом выяснится, что он что-то не умеет, мне придётся ещё решать проблемы Qt. Если у меня были проблемы с WinAPI, то прелесть WinAPI в том, что его внутренний механизм очень сильно прозрачен (да даже исходники есть, если на то пошло) и все вопросы быстро решаются. И я знаю, что у некоторых фреймворков есть нерешаемые проблемы, или обкладывание граблями. Надо рисковать/изучать, а на это надо время (рабочее) которого не так-то и много.
Re[9]: Связка C/C++ и WinAPI - ещё актуальна?
От: Sharov Россия  
Дата: 25.11.19 12:31
Оценка: :)
Здравствуйте, sergey2b, Вы писали:

S>я пытался


S>потому что на последней работа начальник на цыпочкаах подкрадывался сзади

S>и начинал громко возмущаться если на экране не раабота

Мрак... Ну хоть палкой не били.
Кодом людям нужно помогать!
Re[4]: Связка C/C++ и WinAPI - ещё актуальна?
От: Sharov Россия  
Дата: 25.11.19 12:33
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, sergey2b, Вы писали:


S>>это вы про JS и Python


N>Кажется, что в плюсах происходит сейчас сингулярность покруче, чем в JS и Python. Сейчас ещё модули выйдут и язык можно даже не узнать, глядя на гитхабовский репозиторий. Да и сейчас иногда приходится сидеть и медитировать, чтобы понять предназначение той или иной функции.


В этоп плане ява впереди планеты всей -- код десяти и более давности выглядит, практически, также и сегодня. А вот разница между, скажем, C# 2.0 и С# 7.0 будет весьма ощутима.
Кодом людям нужно помогать!
Re[10]: Связка C/C++ и WinAPI - ещё актуальна?
От: Ilya81  
Дата: 25.11.19 12:48
Оценка: +1
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, Евгений Музыченко, Вы писали:


S>>>Через API, но не используя стандартную оконную систему а отрисовывая все с нуля.

ЕМ>>Чем это отличается от owner/custom draw?

N>Всем. У этих контролов нет HWND. Qt может отрисовывать их через OpenGL, задавая любое поведение. GDI может быть невероятно медленным на сложных окнах, потому что будет отрисовывать десятки контролов. Это совершенно разный уровень.


А в WPF через DirectX. Есть класс HwndSource, который связывает с WinAPI, а то, что внутри, с т. зр. WinAPI лишь картинка, своя система обработки событий, не WM.
Re[16]: Связка C/C++ и WinAPI - ещё актуальна?
От: CreatorCray  
Дата: 25.11.19 14:28
Оценка:
Здравствуйте, CEMb, Вы писали:

CC>>GDI вообще не про игры.

CEM>А я на нём и игры делал
Не, простые игры на нём сделать вполне можно, но что нить посложнее уже банально неудобно, просто потому что GDI заточен был под совсем другое и более того, проектировался он довольно давно.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[2]: Связка C/C++ и WinAPI - ещё актуальна?
От: CreatorCray  
Дата: 25.11.19 14:28
Оценка:
Здравствуйте, CEMb, Вы писали:

CEM>Видимо, я один тут пишу на C++/WinAPI большие десктопные проекты и наслаждаюсь этим

Ну я ещё пишу, но для себя. Пишу фана ради и практичного применения для. Пользуюсь всем что написал ежедневно и на винде и на маке (via wine).

CEM> Моё личное убеждение (которому я иногда даже 100% следую) — отделение в коде UI в прослойку.

У меня рендерер отделён, думал поменять на что нить другое если припрёт, но замены чтоб хотя бы on par была по скорости и не тормозила не нашлось. А ведь в минимальном приближении мне надо только 2 операции: вывод текста и FillRect.
Развлекухи ради были у меня рендереры и в PDF и в SVG и в, смешно сказать, HTML + JS который рисует картинку прямо в canvas.

CEM> В идеале я вообще сначала пишу консольное приложение с командами (да, я такой), потом сверху обкладываю это более высоким UI.


Ну оно как то само получается, после того как либо команд становится многовато либо надо сделать наглядный вывод без всей этой консольной псевдографики.

Отрыл тут свой тестовый проект для Direct2D, поигрался ещё раз.

3711 rects, 4094 chars
GDI: 16ms
D2D: 36ms

6135 rects, 6285 chars
GDI: ~24ms
D2D: ~52ms

74942 rects, 85639 chars
GDI: 345ms
D2D: 670ms



При этом в GDI рендерится "что вижу — то пою" а для D2D дописал сортировку во время импорта чтоб как можно меньше было переключений между разными brushes и шрифтами (дало небольшой буст, хотя и скромный)
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[17]: Связка C/C++ и WinAPI - ещё актуальна?
От: CEMb  
Дата: 25.11.19 17:44
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>>>GDI вообще не про игры.

CEM>>А я на нём и игры делал
CC>Не, простые игры на нём сделать вполне можно, но что нить посложнее уже банально неудобно, просто потому что GDI заточен был под совсем другое и более того, проектировался он довольно давно.
Я делал real-time игрушку. У меня была 2D графическая библиотека своя, скейл, повороты, фильтры. Даже свою систему UI потом по неё написал. Ибо странно смотрелись, например, виндовые окна настройки на фоне графики
40 fps на моём старом лаптопе она держала. Можно было бы и больше сделать, если расчёт AI убрать в отдельный поток из основного цикла игры, потому что бывают проседания, когда народу на карте много.
Re[3]: Связка C/C++ и WinAPI - ещё актуальна?
От: CEMb  
Дата: 25.11.19 17:49
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Отрыл тут свой тестовый проект для Direct2D, поигрался ещё раз.


CC>


CC>При этом в GDI рендерится "что вижу — то пою" а для D2D дописал сортировку во время импорта чтоб как можно меньше было переключений между разными brushes и шрифтами (дало небольшой буст, хотя и скромный)


Это интересно. Потому что во времена XP я как раз использовал DX2D чтобы получить более быстрый доступ к экрану, и тогда это отлично работало. А потом пришла 7-ка и захватила DX2D под рабочий стол моё приложение во время работы скидывало Aero, я понял, что так жить нельзя, и свернул разработку и про дальнейшее соревнование DX vs GDI я уже не знаю
Re[12]: Связка C/C++ и WinAPI - ещё актуальна?
От: okman Беларусь https://searchinform.ru/
Дата: 25.11.19 18:18
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>...

N>Я лично в системе видеонаблюдения делал многооконный интерфейс и простые контролы (в том числе с полупрозрачностью и градиентами) сначала на DirectDraw, потом на Direct3D, а потом Qt стала LGPL и мы весть этот кошмар и диалоги на WinAPI переписали на Qt.

Часто слышу, как хвалят Qt.
А вот у нас только что закончилась кошмарная неделька, где мы пытались заставить Qt-приложение (на виджетах) нормально поддерживать High-DPI.
Как выяснилось, в Qt поддержка High-DPI и особенно Per-Monitor DPI, который появился в Windows 8.1, сделана очень криво.
Знал бы раньше — вместо Qt наверняка взяли бы что-то другое, тот же Sciter. Да и размер бинарников после windeployqt.exe "порадовал" —
~60 мегабайт на 4 несложных формы с кнопками и радиобаттонами...
Re[13]: Связка C/C++ и WinAPI - ещё актуальна?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 25.11.19 19:14
Оценка:
Здравствуйте, okman, Вы писали:

O>Да и размер бинарников после windeployqt.exe "порадовал" — ~60 мегабайт на 4 несложных формы с кнопками и радиобаттонами...


В отношении размеров в последние годы идет какая-то вакханалия. Уже не стесняются выкатывать приложения размером в десятки мегабайт, в которых функциональности — на сотни килобайт от силы. Прям соревнование "кто больше". Печально это.
Re[14]: Связка C/C++ и WinAPI - ещё актуальна?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 25.11.19 19:22
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>В отношении размеров в последние годы идет какая-то вакханалия. Уже не стесняются выкатывать приложения размером в десятки мегабайт, в которых функциональности — на сотни килобайт от силы. Прям соревнование "кто больше". Печально это.


Зачастую и выбора-то нет. Например, подключил Intel MKL и получил в нагрузку десятки мегабайт разного кода, оптимизированного под разные процессоры. Нужен он тебе или нет, но таскать его надо.
Используешь CUDA? Держи библиотек на сотню-другую мегабайт. Но на Линуксе это всё таки гуманней.
Re[3]: Связка C/C++ и WinAPI - ещё актуальна?
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 25.11.19 19:32
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>А какой каноничный способ сейчас для написания приложений? WinRT?


Всё на Электроне. Главное, запомните, что правилом хорошего тона сейчас считается тратить хотя бы 200 МБ на GUI, даже если ваше приложение просто висит в трее 99% времени.
Ce n'est que pour vous dire ce que je vous dis.
Re[4]: Связка C/C++ и WinAPI - ещё актуальна?
От: vsb Казахстан  
Дата: 25.11.19 21:01
Оценка:
Здравствуйте, Don Reba, Вы писали:

vsb>>А какой каноничный способ сейчас для написания приложений? WinRT?


DR>Всё на Электроне. Главное, запомните, что правилом хорошего тона сейчас считается тратить хотя бы 200 МБ на GUI, даже если ваше приложение просто висит в трее 99% времени.


А если у меня фобия и я не хочу тратить ни одной лишней инструкции процессора и ни одного лишнего байта? Вот WinAPI хорошая штука. На C можно писать без проблем. Но вроде нынче устаревший считается. А как на C писать так, чтобы было не устаревшее, не пойму.
Re[17]: Связка C/C++ и WinAPI - ещё актуальна?
От: Stanislav V. Zudin Россия  
Дата: 25.11.19 21:16
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Можно пример того самого современного UI "с овальчиками"?


"С овальчиками" у меня нет, но есть другой пример.
Штатные средства WinAPI не заточены для flexible layout'а.
DeferWindowPos() немного устраняет мелькание, но закат солнца всё равно осуществляется вручную.
Тут "безоконные" технологии рулят неимоверно (htmlayout, QML, XAML и проч).

А когда возникает необходимость создавать контролы в рантайме, то вообще наступает полный Пэ. А если они еще и в окошке не помещаются и надо добавить прокрутку...


  я говорю о чем-то таком
_____________________
С уважением,
Stanislav V. Zudin
Re[10]: Связка C/C++ и WinAPI - ещё актуальна?
От: sergey2b ЮАР  
Дата: 26.11.19 01:17
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, sergey2b, Вы писали:


S>>я пытался


S>>потому что на последней работа начальник на цыпочкаах подкрадывался сзади

S>>и начинал громко возмущаться если на экране не раабота

S>Мрак... Ну хоть палкой не били.


Я к одним пришёл на собеседование
Они говорят мы хотим что бы вы писали тест в vim
Я им я его не знаю
Они вот вам инет на полчаса изучайте
Re[18]: Связка C/C++ и WinAPI - ещё актуальна?
От: CreatorCray  
Дата: 26.11.19 02:20
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

CC>>Можно пример того самого современного UI "с овальчиками"?

SVZ>"С овальчиками" у меня нет, но есть другой пример.
SVZ>Штатные средства WinAPI не заточены для flexible layout'а.
Какие штатные средства и что понимается под flexible? Как то уж слишком расплывчато, нельзя ли конкретики?

SVZ>DeferWindowPos() немного устраняет мелькание, но закат солнца всё равно осуществляется вручную.

SVZ>Тут "безоконные" технологии рулят неимоверно (htmlayout, QML, XAML и проч).
А какое отношение это имеет к GDI? Ты похоже путаешь GDI и Window subsystem, в которой сломали поддержку double buffering где то в районе Vista.
Вон у меня есть свой рендерер на GDI, в котором все контролы "безоконные", и чо?

А сам WinAPI же в себя включает в общем то вообще всё базовое API что предоставляется операционкой.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[18]: Связка C/C++ и WinAPI - ещё актуальна?
От: CreatorCray  
Дата: 26.11.19 02:20
Оценка:
Здравствуйте, CEMb, Вы писали:

CEM>У меня была 2D графическая библиотека своя, скейл, повороты, фильтры.

А GDI каким боком там была?

CEM>40 fps на моём старом лаптопе она держала.

Самая медленная часть в любом рендерере это рендеринг векторных шрифтов. BitBlt же вообще HW accelerated.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[4]: Связка C/C++ и WinAPI - ещё актуальна?
От: CreatorCray  
Дата: 26.11.19 02:20
Оценка:
Здравствуйте, CEMb, Вы писали:

CEM>Это интересно. Потому что во времена XP я как раз использовал DX2D чтобы получить более быстрый доступ к экрану, и тогда это отлично работало.

Ты с DirectDraw не путаешь?
Direct2D появился с Vista а для HW acceleration требует WDDM 1.1 (W7+)

CEM> А потом пришла 7-ка и захватила DX2D под рабочий стол моё приложение во время работы скидывало Aero, я понял, что так жить нельзя, и свернул разработку и про дальнейшее соревнование DX vs GDI я уже не знаю
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.