VS2005, C++, Win: Альтернативы GUI-framework-ам

0000

Из тех что знаю: WinAPI, MFC, ATL, WinForms, QT, GTK+, wxWidget
В первых трех писать GUI вроде как уже моветон: муторно и неудобно.
WinForms вроде как под С++ не очень.
QT - случайно увидел отрицательный отзыв и офигел (думал, что она и под Win всех порвала).
GTK+ и wxWidget - какие то аналоги QT. Просто названия видел.
Собственно планируется писать несложный GUI с MDI стилем. Что посоветуете?
Из всего перечисленного GUI писал только на WinAPI, но он меня забодал.
QT4 уже собрал, со студией подружил, hello world написал.
Все остальное видел мельком, кроме последних двух.

Dasar

из нового еще WPF есть
если приложение чисто виндовое, то рекомендую WinForms.
под C# он конечно лучше идет, но на C++, если руку набить, тоже нормально получается.
ps
QT, GTK+, wxWidget - под винду скорее всего ужасно будут смотреться.

slonishka

у QT же под виндой нативные виджеты?
вот у "аналогов" — кажется, хуже.

0000

WinForms не сильно хочется, т.к. придется проверять наличие Framework. Да и пока боязно мне его использовать, что то мне кажется не приживется он.
QT выглядит кхм... не совсем обычно

6yrop

то рекомендую WinForms.
ну ты кагбы это, зачем такое советовать?
у майкрософта современной гуи библиотекой считается WPF. Мое мнение после первого знакомства с WPF — гораздо продуманей в архитектурном плане чем WinForms.

Devid

А чем WTL муторен и неудобен?

6yrop

Да и пока боязно мне его использовать, что то мне кажется не приживется он.
о, это почему? :)

6yrop

MDI стилем
это тоже уже моветон вроде

0000

Не приживется как мне кажется, потому как прожорлив, а слабые компы даже новые выпускаются (те же нетбуки).
WPF он случайно не на смену WinForms пришел?
Че та нифига у меня WPF проекта нет в VS2005. Наверно что то не доставил :grin:
WTL - это входит в ATL?
MDI просто хоцца.

6yrop

Не приживется как мне кажется, потому как прожорлив, а слабые компы даже новые выпускаются (те же нетбуки).
говорят, ресурсы он жрет только на спец. эффектах, обычными формочками вроде как все ок, за редким исключением

6yrop

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

Devid

WTL - это входит в ATL?
Наоборот, WTL это расширение ATL.

Dasar

Наоборот, WTL это расширение ATL.
он еще поддерживается?
последний раз когда я сталкивался с WTL, то это была какая-то "подпольная" либа - непонятно кем и на каких условиях поддерживаемая.

Devid

если верить вики последняя версия 2007 года

0000

А у WTL имеется какой то наглядный редактор для компонент? Тот что я нашел в Студии - это обычный редактор ресурсов и собственно того, что можно кинуть на форму там совсем не густо :(
Пока к QT склоняюсь: и неплохой GUI редактор есть, и маны хорошие вроде. Тока вот .dll-ки к QT на 9мб :(

psm-home

Qt это хорошо. Можно делать гуй который под Windows как родной. Дорого только. Тебя стоимость лицензии не волнует чтоль? А от WTL осталось впечатление, как уже сказал , чего-то подпольного. Она позволяет делать очень компактные и шустрые небольшие приложения, но делать на ней что-то более-менее сложное я б не взялся, многовато руками всего надо будет делать.

0000

А что в WTL с компонентами? Хочется именно GUI лепить в редакторе.
Если у WTL только стандартный набор, то мне проще на WinAPI все то же самое набросать (разве что всякие CommonControls надо самому делать).

0000

А что в WTL с компонентами? Хочется именно GUI лепить в редакторе.
Если у WTL только стандартный набор, то мне проще на WinAPI все то же самое набросать (разве что всякие CommonControls надо самому делать).
Стоимость лицензий меня волнует в последнюю очередь - Студия у меня тоже паленая.

psm-home

Хочется именно GUI лепить в редакторе.
Стоимость лицензий меня волнует в последнюю очередь

Тогда посмотри QT. WTL это тонкая обертка над WinAPI, скорее всего тебе её будет мало.

Helga87

HTMLayout

klyv

HTMLayout
Ты его использовал? какие впечатления? не врут?

Helga87

В текущем проекте начинаю использовать. Пока не могу сказать определенно. Возможно вместо него буду использовать внутренности Mozilla Firefox (Mozilla Chrome, не путать с Google Chrome).
Основное, что не нравится - вместо скрипта вызывается язык, на котором пишешь (С++, С# или один из кучи других языков, к которым есть биндинг). А я хотел бы вместе с HTMLayout использовать еще и JsTemplate

klyv

чем отличается от контроллируемого тобой стандартного контрола "бравзер"?
там тоже можно из JS дёргать API проги, которая держит контрол.

Helga87

Потому что это стандартная технология Microsoft: если что-то выходит за рамки use-case-ов, которые используют сами разработчики, начинается свистопляска. В этом отношении — спасибо, Microsoft, за C#. Хоть чо-то нормальное.
Еще не нравится тем, что в этом случае придется использовать ту версию контрола, которая стоит на текущей системе, а это значит надо будет верстать под тормозной и слишком старый IE6. Хочется же, чтобы все работало из коробки, причем быстро и одинаково на всех машинах.
Знаешь ли ты, что для того, чтобы засунуть в javascript какие-то методы С++/С# тебе нужно написать и зарегистрировать в системе activex? Это очень, очень неприятно.

nikita270601

Знаешь ли ты, что для того, чтобы засунуть в javascript какие-то методы С++/С# тебе нужно написать и зарегистрировать в системе activex? Это очень, очень неприятно.
Необязательно, но тем не менее это геморно, неудобно и отвратительно документировано.

0000

Спасибо, откликнувшимся. Пока QT решил помучать.

erotic

wxWidget - под винду скорее всего ужасно будут смотреться.
Это ты зря. В описании wxWidgets сказано, что там для каждой платформы native код используется, т.е. приложение будет везде как родное выглядеть. Под MacOS, я видел, используется Carbon, под linux - GTK или Motif, под винду тоже как родное выглядит.
К тому же на нем вроде прогать очень удобно (у меня сотрудник на работе недавно первое приложение на нем написал, очень положительные отзывы).
В общем, прежде чем сказать что-то, посмотрел бы хоть скриншоты .

Dasar

общем, прежде чем сказать что-то, посмотрел бы хоть скриншоты .
какие-то они страшненькие, т.е. на винду похоже, но дцать лет назад.

Dasar

вроде вполне себе по-виндовому?
толька рамка окон xp-шная
все остальное древнее.
где, например, градиенты в тулбарах?

yroslavasako

> под винду скорее всего ужасно будут смотреться
Я пользуюсь Filezilla под виндой и мне её интерфейс вполне по душе. Минималистично, но удобно.

odissey

реально удобно писать? а то что там MDI еще не реализован и DataGrid кривая - это враки всё? Самому интересно, стоит ли переходить на WPF.

kokoc88

HTMLayout
Ты не в курсе, он умеет себя рендерить (с прозрачностью) на OpenGL/DirectX окна?

kokoc88

у майкрософта современной гуи библиотекой считается WPF
Моё субъективное мнение в том, что WPF задуман хорошо, а вот выполнен не очень. Даже после сервис пака в нём остаётся большое количество проблем.
Во-первых, тема со шрифтами. Я не знаю, что там на MAC, а под виндой многие люди настолько сильно привыкли к привязке к пикселям, что любые разговоры на тему улучшения читабельности маленьких шрифтов кажутся просто оправданиями. Лично я считаю, что тут Микрософт просто слажали. Ну не могут мои глазки понять, как можно улучшить читаемость шрифтов маленького размера на ЖК мониторах путём размазывания чётких линий, попадающих в пиксели экрана.
Вторая проблема - недоработки многих контролов. Для примера я бы взял TreeView и RichTextBox.
TreeView сделан без виртуализации. То есть для того, чтобы развернуть группу дерева, фреймворку надо сгенерировать и выполнить разметку (layout) всех дочерних компонентов этой группы. При этом не важно, попадают элементы группы в видимую область дерева или нет. Мне не понятно, как в 2008 году можно выпускать в релиз GUI контрол дерева, в котором раскрытие группы (для примера брал 300 позиций, картинка 24х24 и текст) визуально заметно (задержка до 0.5-0.8 секунд). Это приводит к тому, что разработчику приходится рожать легионы ёжиков. Дерево приходится эмулировать через список (список в WPF работает с виртуализацией). А такая де факто стандартная для качественных GUI операция, как выделение (selection) определённой позиции дерева, требует затрат, которые иначе, как кусанием обоих локтей одновременно, не назовёшь.
RichTextBox - это замена ставшему для многих привычным RichEdit контролу. Только скорость его работы сравнима разве что со скоростью передвижения улитки в небрачный период (для спаривания они передвигаются быстрее). Для примера можно взять сотню параграфов по 512 символов каждый с текстом и небольшими (32х32) картинками. (Впрочем, картинки необязательны, просто с ними эффект будет более удручающим.) Даже при самом простом выравнивании по левому краю (а ведь есть ещё justification/hyphenation) при изменении размеров RichTextBox'а перерисовка будет заметна глазу. (Если кто-то решит повторить этот эксперимент и будет удовлетворён разметкой чистого текста, вставьте картинки.) Видимо, команда WPF поссорилась с командой IE, в результате чего разметка текста писалась с нуля. Просто IE может отобразить гораздо больший объём данных (даже с картинками и выравниванием) и при изменении размеров документа не будет знать никаких проблем.
Конечно, это только часть известных мне проблем, решение которых бывает как простым, так и очень сложным. (Но в любом случае нетривиальным.) В 2008 году при разработке программ на современных технологиях я ожидал по крайней мере высокой скорости работы и набора контролов, которые помогут решать все задачи для разработки современного и удобного GUI. Не спорю, что WPF помог решить большое количество каких-то проблем. Но при этом он добавил такое же количество других. Будем ждать дальнейших улучшений.

Helga87

Ты не в курсе, он умеет себя рендерить (с прозрачностью) на OpenGL/DirectX окна?
просто полупрозрачность там точно есть. Про прозрачность на OpenGL/DirectX не скажу. Но на рсдн есть раздел специально для таких вопросов к разработчику HTMLayout.

al70

А вот Management Studio под SQL 2005 не на нем случайно написана?

zya369

а в каких виндовых приложениях можно на эти градиенты посмотреть - чтоб понять насколько это актуально и зачем оно нужно :)

Dasar

а в каких виндовых приложениях можно на эти градиенты посмотреть - чтоб понять насколько это актуально и зачем оно нужно
например, office 2003.
причем речь идет о теме-классике. в не классике еще больше различий скорее всего будет.

Andbar

а в каких виндовых приложениях можно на эти градиенты посмотреть - чтоб понять насколько это актуально и зачем оно нужно :)
Ну, видимо, 2003й офис, последняя студия. Лично мне такой стиль совершенно не нравится, в отличие от стиля офиса XP.

zya369

ну а окромя последних версии продуктов от микрософт кто-нить еще такое юзает?

Andbar

Кстати, мне интересно, какому идиоту из m$ пришел в голову этот неконфигурируемый изврат...

0000

Он же конфигурится вроде через реестр?

klyv

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

Andbar

Он же конфигурится вроде через реестр?
Обычный диалог конфигурируется, но офис использует свой диалог.
Иными словами, они создали захардкоженный велосипед.

6yrop

А вот Management Studio под SQL 2005 не на нем случайно написана?
нет, это приложение появилось раньше

Dasar

ну а окромя последних версии продуктов от микрософт кто-нить еще такое юзает?
из того, что под рукой (но у меня софт в основном старый стоит, района 2005-го)
есть в:
microsoft vs 2005
microsoft vs 2008
microsoft office
microsoft sql 2005
все .net-ные проги
ie6 - нет
firefox - нет
microsoft vs 2003 - нет

6yrop

1. да со шрифтами, я отчасти согласен, слажали, более того не хотят осознавать, что слажали. Правда размытость сильно зависит от монитора. По поводу того, что на виндах люди привыкли к попаданию в пиксель, это не совсем так, начиная с 7-ой версии в IE также идет сглаживание шрифтов похожим алгоритмом. Но, имхо, алгоритмы в IE7 и WPF отличаются :(. По-началу в IE7 шрифты тоже раздражали, потом привык, полгода спустя пробовал вернуть режим попадения в пиксель, неее, теперь мне подавай сглаженные. Висты у меня пока не стоит, а там вроде по-умолчанию везде трутайп. Про Висту нам пускай Пенартур расскажет.
2. По поводу контролов — хороший повод написать свои контролы :). Кто это будет оплачивать это отдельный вопрос. Ну а собственно, почему майкрософт должна делать все нахаляву и при это все идеально было?

kokoc88

2. По поводу контролов — хороший повод написать свои контролы . Кто это будет оплачивать это отдельный вопрос. Ну а собственно, почему майкрософт должна делать все нахаляву и при это все идеально было?
Ну а собственно вопрос, нафига тогда использовать эту "новую" технологию, если на ней приходится решать уже решённые задачи? (Ты представляешь себе сложность написания юникодного RichTextBox'а?) Я просто не доволен тем, что в GUI библиотеке черепаший текстовый редактор. :mad:

slonishka

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

karkar

А вот Management Studio под SQL 2005 не на нем случайно написана?
Тоже всегда поражался тормознутойстью этой проги, думал это .NET и там все так JIT-компилится долго. Потом посмотрел зависимости, а там сплошной С++ и ATL, емнип. Конечно, никакого WPF тогда не было, и это даже не WinForms, похоже.

6yrop

чтобы выжить на рынке. в треде же отзывы девелоперов есть лол.
тк где имена конкурентов?

6yrop

Ты представляешь себе сложность написания юникодного RichTextBox'а
а тебе нужна именно вся функциональность RichTextBox-а?

Dasar

Я просто не доволен тем, что в GUI библиотеке черепаший текстовый редактор.
а какие другие есть варианты компонента-редактора именно рич текста? кроме старого варианта richtexbox от микрософта?
ps
имхо, задача редактирования рич текста довольно дорогая, и на данный момент почти не представлена на рынке.
а ты ее хочешь, чтобы она работала для больших объемов быстро, да еще и на халяву.
ззы
видел варианты: html + js, но они тоже вроде все тормозные.

kokoc88

а тебе нужна именно вся функциональность RichTextBox-а?
А что там такого особенного по сравнению с WordPad'ом (WIN32 RichEdit)? Ведь тормозит даже обычный документ, разбитый на параграфы, в каждом из которых один текстовый проход.

kokoc88

а какие другие есть варианты компонента-редактора именно рич текста? кроме старого варианта richtexbox от микрософта?
Редактор от SWING-а работает достаточно приемлемо. Редактор от QT. Оба ещё и кроссплатформенные. Редактор Delphi (тот же WIN32 RichEdit?).
имхо, задача редактирования рич текста довольно дорогая, и на данный момент почти не представлена на рынке.

Задача как задача, вполне реализуема такими ресурсами, которые есть у микрософта. Тем более, я привёл банальный пример: текст на 0.5мб и сотня маленьких картинок. (Я даже не поставил выравнивание (justify) на параграфы, с которым, впрочем, прекрасно справляются описанные выше компоненты.) В SWING/QT/WIN32 это совсем не тормозит.

slonishka

тк где имена конкурентов?
устаревшие версии Windows тебя наверное устроят более всего.
хотя вопрос глуп до неприличия, конечно.

6yrop

устаревшие версии Windows тебя наверное устроят более всего.
хотя вопрос глуп до неприличия, конечно.
и ты решил ответить также.
Насколько я тебя понял, поскольку MS выпустила не качественную гуи платформу (с этим все согласны то ты утверждаешь, что WPF не выживет на рынке? Хорошо, узнаем через два три года сбудется ли твой прогноз.

slonishka

я утверждаю, что твое "зачем бесплатно делать нормальный фреймворк" — глупое.
разработчик ОС в условиях конкуренции должен приветствовать усилия юзерспейс-разработчиков и всячески им помогать.
о судьбе WPF я ничего не берусь предполагать. =)

yroslavasako

Майкрософт вроде же взяло курс на интернетсервис-ориентированную ось, забыл как она называется. Так что при ожидаемом массовом переходе на веб, указанный фреймворк выпадает из приоритетов разработки.

kokoc88

на веб, указанный фреймворк выпадает из приоритетов разработки.
Не выпадет, он лежит в основе SilverLight.

6yrop

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

klyv

а нахуй тогда вообще ось?
вот и Stallman об этом думал, да делал emacs...

Dasar

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

Andbar

раньше нормальный richedit входил в этот набор

al70

Тоже всегда поражался тормознутойстью этой проги

Во-во. Я на работе с ее помощью новый комп пробил. Мне очень долго ебали мозг, потом поставили 1 Гб оперативки — типа, это решит все проблемы. Но мне нужен был новый комп, а менять целиковый комп категорически отказывались. А потом я показал, как открывается табличка в Management Studio. Комп поменяли на следующий день.
Оставить комментарий
Имя или ник:
Комментарий: