C++ и GUI
Очень часто, сравнивая языки программирования в целях последующего выбора, программисты сравнивают не столько возможности самого языка сколько возможности библиотек и утилит. Часто выбор падает не на C++ именно из-за GUI. А зря :)
Тем кто в процессе выбора и не знает какие существую GUI-шные библиотеки для C++ и посвящается этот пост. Оговорю лишь, что этот список ограничивается лишь теми библиотеками с которыми я стыкался лично.
VCL (visual component library). Самая противоречивая библиотека. С одной стороны она была революционной, но с другой стороны она написана на Object Pascal и компилируется лишь при помощи Borland C++Builder . Сейчас добавились еще минусы: не поддерживает windows стилей, слегка устаревшая концепция. Неоспоримым же плюсом этой библиотеки есть возможность Delphi-разработчиков совершенно безболезненно переходить на C++.
Вспомнил я об этой библиотеке по той причине, что ходят слухи об ее полной переработке в новом продукте Turbo C++ 2006. В этом продукте заявляется поддержка нативного Windows GUI, чего раньше и близко не было. Хотя пока что эту информацию проверить у меня возможности не было.
MFC (microsoft foundation class library). Это тоже "монстр" из прошлого. Очень многофункциональная и очень медленная и очень неудобная библиотека, как мне кажется. Вообщем-то, в лучших традициях microsoft :). Тем не менее, до сих пор часто используемая. Если вы уже к ней привыкли, то мое описание вам ни к чему, а если вы ее еще не использовали, то лучше обратить свой взор на другие библиотеки.
WTL (windows template library). Эта библиотека была заброшена microsoft, но подхвачена активистами. И именно это спасло библиотеку от чрезмерностей. Вышла эта библиотека необычайно легкой и удобной. По своей сути, это объектно-ориентированная прослойка над Windows API в вопросах касающихся GUI. Конечно же тут у вас не будет никаких возможностей потягать новый компонент по форме. Но и чрезмерных сложностей не возникает если не боитесь писать код руками, хотя в противном случае C++ не для вас.
Что-то я отвлекся от описания самой библиотеки. Думаю в ее честь стоит сделать серию отдельных постов.
wxWidgets. Эта библиотека просто мечта разработчика кросс-платформенных приложений. На самом деле кросс-платформенная библиотека, которая использует нативные вызовы операционной системы (это вам не корявый swing). Есть даже утилита для визуального редактирования окон. Конечно же это не панацея: местами встречаются недоработки; некоторых контролов не хватает, например выбор даты. Но радует тот факт, что библиотека очень бурно развивается. Почитать, посмотреть и скачать можно здесь: http://www.wxwidgets.org
QT. Лучший на данный момент пакет разработки кросс-платформенного GUI под С++. Подчеркиваю, что это не просто библиотека, а целый пакет, который включает собственно библиотеку и широкий набор инструментов. Но к сожалению, и стоит это удовольствие немало - до $6600. Для тех кому цена не проблема, это лучший выбор. Сайт разработчиков: http://trolltech.com
5 комментариев:
Очень неплохой короткий обзор средств для визуальной разработки. Хотя как по мне действительно переносимых програм не так уж и много и в основном те которые не используют конкретных возможностей ОС. Например переписать игру написанную под DirectX смысла нет. Т.е. нужно понимать зачем нужна переносимость, если только для маркетинговых целей, то особо заморачиватся и не стоит. А если это будет полезная утилита для разных ОС, то стоит и попробывать.
Согласен с автором в том, что Qt - лучшая библиотека для создания GUI. Сам на нее наткнулся случайно, но, можно сказать, влюбился с первого взгляда (-; Все настолько красиво, продуманно и логично, что все остальное кажется недоразумением. Авто забыл упомянуть, что у Qt есть open source версия, которая абсолютно бесплатна.
Qt бесплатна для использования в Open Source проектах под GPL лицензией.
Такой уже начатый и существующий проект потом нельзя превращать в закрытый коммерческий проект путём покупки коммерческой лицензии Qt. Trolltech говорит, что в таком случае либо весь код этого проекта должен быть переписан с нуля, либо уплачены деньги за коммерческую лицензию за весь период существования проекта под OpenSource. Иначе они не продадут коммерческую лицензию. Хозяин-барин.
Т.е. если задумали делать коммерческий закрытый проект, то его нужно делать сразу под коммерческой лицензией, а не переводить потом.
вы забыли один из основных фреймворков результаты работы которого видели многие. это codejock.
их фреймворком пользуется майкрософт для создания интерфейса для офиса и вижлы. интерфейс 2007-й вижлы и предыдущих - их рук дело.
и еще немного по поводу qt - это кроссплатформенный фреймворк для создания полноценных приложений. графика - это лишь малая часть того что можно создать на qt. =)
и еще добавлю о одной малоизвестной библиотеке которая развивается ныне силами одного человека. но зато как! =) Это Juce от rawmaterialsoftware. планы грандиозные. но и то что уже реализовано ныне впечатляет.
добавил бы сюда еще fltk и fox toolkit
Отправить комментарий