Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Чем писать прогриммы для Windows на С++?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
kolisnichenko_r
Здравствуйте!
Какие есть бесплатные средства разработки программ под Windows на С++? Программы будут продаваться в открытую. Как происходит сертификация данного продукта?
Сергей Борщ
Добавлю, что Dev-C++ теперь развивается под именем wxDev-C++
kolisnichenko_r
Спасибо.
А Вы чем работаете?
*antzol*
Qt
Xenia
OWLnext
http://owlnext.sourceforge.net/

Маленькая и компактная библиотека классов для GUI-интерфейса под Windows. Компилится на всех компиляторах компании Borland (откуда она, кстати, когда-то произошла) и ее приемниках (в том числе и RAD Studio 2009 года), всех версиях MS C++ Studio (включая 2008 года) и gcc. Удовлетворяет требованию бесплатности.
Рекомендую всем, кому нужна обозримая версия, в исходниках которой можно разобраться.
kolisnichenko_r
Цитата(Xenia @ Jul 16 2009, 20:52) *
OWLnext
http://owlnext.sourceforge.net/

Маленькая и компактная библиотека классов для GUI-интерфейса под Windows. Компилится на всех компиляторах компании Borland (откуда она, кстати, когда-то произошла) и ее приемниках (в том числе и RAD Studio 2009 года), всех версиях MS C++ Studio (включая 2008 года) и gcc. Удовлетворяет требованию бесплатности.
Рекомендую всем, кому нужна обозримая версия, в исходниках которой можно разобраться.

Тоесть для работы Вы используете компилятор Borland Builder бесплатной версии и библиотеку классов OWLNext. И никто к Вам не цепляется по поводу лицензии программного обеспечения?
Xenia
Цитата(kolisnichenko_r @ Jul 17 2009, 08:14) *
Тоесть для работы Вы используете компилятор Borland Builder бесплатной версии и библиотеку классов OWLNext. И никто к Вам не цепляется по поводу лицензии программного обеспечения?


Я использую Buider 6 или еще более древний Borland C++ 5.02 (релиз 1997 года еще до эпохи Билдеров). В данном случае новизна самого компилятора вещь второстепенная, т.к. новая OWLnext (последняя версия обновилась в этом месяце) знает о особенностях современных Windows (включая Vista) всё, что нужно знать.
Не знаю точно как обстоит дело с Buider 6 сейчас, но за Borland C++ 5.02 нынче никто не цепляется, т.к. сама компания Borland этим делом давно не занимается (сначала передала права CodeGear, а потом Embacadero), а последним наплевать на права Borland'а на продукт 12-летней давности.
Что же касается меня лично, то у меня имеются официальные лицензии на Borland C++ 3.0, Borland C++ 4.5, Borland C++ 5.02, Buider 6, CodeGear RAD Studio 2007 (все версии покупались с большой скидкой, как апгрейды к более ранним). А кто покупал первый Borland C++ 3.0 уже никто не помнит, давно было.
Но если так остро стоит вопрос о бесплатности компилятора - используйте gcc, он бесплатен по определению.
MrYuran
Цитата(Xenia @ Jul 17 2009, 17:55) *
Но если так остро стоит вопрос о бесплатности компилятора - используйте gcc, он бесплатен по определению.

Ещё есть опен ватком.
Xenia
Цитата(MrYuran @ Jul 17 2009, 18:52) *
Ещё есть опен ватком.


На Ватком OWLNext не ставится. Вот здесь - http://owlnext.sourceforge.net/prebuild.html - представлены уже скомпилированные библиотеки для всех поддерживаемых комиляторов. На практике выбираешь одну из них и с ней работаешь. Ничего инсталлировать не надо, просто добавляешь подходящую библиотеку (это один единственный файл!) в директорий LIB, где хранятся родные библиотеки компилятора, а папку OWL со специфическими хидерами кладешь в директорий INCLUDE, где хранятся родные хидера компилятора (папку при этом вытрясать не надо - так в своей папке пусть и лежат). Вот и все!
По сравнению с этим, Qt - это монстр какой-то!
Важно понимать, что OWLNext это надстройка над операционной системой Windows, организованная в виде пользовательских классов, опирающихcя на ее API. А Qt - автономное государство в государстве (анклав), где практически всё реализуется исходя из примитивов. В этом-то и причины как переносимости Qt на неродственные платформы, так и огромного веса её библиотек. Для сравнения, статическая билиотека OWLNext весит меньше 4-х мегабайт, а реально добавляемый к программе код - около 600-800 килобайт.
kolisnichenko_r
Спасибо!
Буду разбираться.
zltigo
Цитата(Xenia @ Jul 17 2009, 19:08) *
Важно понимать, что OWLNext это надстройка над операционной системой Windows, организованная в виде пользовательских классов, опирающихcя на ее API.

При этом РЕАЛЬНО совершенно незачем использовать над API надстройки. Надстройки это просто отрыжка борлондячей политики привязывавшей пользователей всеми средствами прользователей к своим "особенным" продуктам.
Xenia
Цитата(zltigo @ Jul 20 2009, 14:39) *
При этом РЕАЛЬНО совершенно незачем использовать над API надстройки.


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

Услуги, предоставляемые операционной системой программе, чем-то схожи с водопроводом, отоплением, канализацией, сетью магазинов и т.п. Программа, отстаивающая свою независимость от платформы, подобна маняьку, который овощи выращивает на подоконнике в цветочных горшках, воду собирает с крыши, отапливается буржуйкой или по-черному, а по малой и большой нужде ходит в яму, выкопанную посреди комнаты smile.gif. От такой "независимости" вреда куда больше, чем в зависимости от операционной системы, которая предоставляет столько возможностей, что глаза буквально разбегаются. А операционная система Windows в этом смысле самая щедрая.

Цитата(zltigo @ Jul 20 2009, 14:39) *
Надстройки это просто отрыжка борлондячей политики привязывавшей пользователей всеми средствами прользователей к своим "особенным" продуктам.


OWL-библиотека лишь группирует средства API вокруг определенного пользовательского элемента. Например класс TButton описывает кнопку, в котором функции-члены класса позволяют делать с этой кнопкой всё, на что кнопка в принципе способна. Т.е. тут есть и функции, утапливающие эту кнопку, и опредляющие надпись или картинку на ее поверхности, и функции автоматически делающие ее активной или неактивной в зависимости от любого условия. Кроме того есть множество функций, которые сами выполняются при каких-то ситуациях с этой кнопкой, например, когда на нее наведена мыщь, или по ней этой мышью кликнули один раз, дважды, или нажали над ней правую кнопку мыши, активировали табулятором и т.п. Сюда же относятся и функции, которые запускаются, если окно, на котором изображена эта кнопка, именило свои габариты (например, было растянуто), изменилось разрешение экрана или масштаб диалоговых элементов, или пользователь сменил палитру рабочего стола. Кроме того, дилоговое окно, которое, в свою очередь, представлено своим классом (TDialog) тоже всегда находится в курсе, что происходит с элементами, на нем расположенноми. Поэтому устанавливая кнопке класс TButton, мы тем самым делаем ее управляемой от диалогового окна, делая возможными групповые операции типа "когда одну из кнопок нажимаем, ранее нажатая выскакивает".

Перечислять возможные ситуации можно очень долго, но главный плюс в том, что все эти функции, определяющие реакцию стандарной кнопки на "раздражение" уже написаны. А программист лишь доопределяет эти функции (дописывает или заменяет на свои) в том случае, когда стандартная реакция кнопки его не устраивает.

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

Понятно, что самый компактный и экономичный способ существования получится, если ездить общественным транспортом, а не заниматься содержанием лошади, заготовкой ей сена и т.п. smile.gif Времена натурального хозяйства давно прошли. И в отношении к компьютерной среде, в том числе.
zltigo
Цитата(Xenia @ Jul 20 2009, 15:34) *
когда программисту становится сложным предусмотреть все возможные ситуации, которые могут реально возникнуть....

И программы которые писались теми, кому "сложно" (сложности, ведь не исчерпываются графическим интерфейсом sad.gif ), благодаря этим "библиотекам да компонентам" видны невооруженным взглядом и не приходится тратить особо много времени на их отсев. Увидел, например, характерную борлондячую кнопочку - и сразу видишь человеку было "сложно", и сносишь. Несомненное удобство и облегчение участи пользователя smile.gif!
_Pasha
Добавлю скромненькую библиотеку FLTK www.fltk.org



vvs157
Цитата(zltigo @ Jul 20 2009, 15:39) *
При этом РЕАЛЬНО совершенно незачем использовать над API надстройки. Надстройки это просто отрыжка борлондячей политики привязывавшей пользователей всеми средствами прользователей к своим "особенным" продуктам.
Под API сейчас практически никто не пишет. Начиная от MFC и заканчивая dotnet последний версии (с >300МБ redistribution pack) - это то же надстройки.
Xenia
Цитата(zltigo @ Jul 20 2009, 15:58) *
Увидел, например, характерную борлондячую кнопочку - и сразу видишь человеку было "сложно", и сносишь.


Да, по нынешнему времени борландовский раскрас кнопок выглядит анахронизмом. Но надо понимать, что раскрашивали их в пору Windows 3.1, когда родное оформление графических элементов было довольно-таки убогим. И в те времена такие кнопки почитались за шик smile.gif. Но в более поздних версиях Windows навели марафет. Тут не только тени, но и целый набор централизованно выбираемых стилей. После этого борландовский раскрас выглядит уже скромно, а у кое-кого вызывает неадекватную реакцию smile.gif.

Но ведь не беремся же мы за молоток, когда видим микросхемы в DIP-корпусе? smile.gif А при програмировании и того проще - если хочется иметь Windows-ский псевдотрехмерный раскрас, то достаточно выполнить:
EnableCtl3d(true);
А если хочешь заказать старые кнопки, то выполняешь:
EnableBWCC(true);
Т.е. в том и другом случае осуществляешь заказ того, что хочешь. А если не заказывать ничего из этого, то кнопки получатся стандартными, такими, как они выглядят на родных виндоусовских диалогах.
kolisnichenko_r
Цитата(zltigo @ Jul 20 2009, 15:58) *
И программы которые писались теми, кому "сложно" (сложности, ведь не исчерпываются графическим интерфейсом sad.gif ), благодаря этим "библиотекам да компонентам" видны невооруженным взглядом и не приходится тратить особо много времени на их отсев. Увидел, например, характерную борлондячую кнопочку - и сразу видишь человеку было "сложно", и сносишь. Несомненное удобство и облегчение участи пользователя smile.gif!

Интересно посмотреть на творения Ваших рук
HARMHARM
Цитата(kolisnichenko_r @ Jul 21 2009, 08:35) *
Интересно посмотреть на творения Ваших рук

Не язвите, а покопайтесь по форуму. Сразу вопросы отпадут.
kolisnichenko_r
Цитата(HARMHARM @ Jul 21 2009, 08:54) *
Не язвите, а покопайтесь по форуму. Сразу вопросы отпадут.

Я без всяких задних мыслей, просто интересно.
HARMHARM
Цитата(kolisnichenko_r @ Jul 21 2009, 08:56) *
Я без всяких задних мыслей, просто интересно.

Посмотрите здесь.
Aesthete Animus
А про wxWidgets еще не обмолвились? unsure.gif
zltigo
Цитата(kolisnichenko_r @ Jul 21 2009, 08:35) *
Интересно посмотреть на творения Ваших рук

А они не для "смотреть" smile.gif - они для работать.
kolisnichenko_r
Цитата(zltigo @ Jul 21 2009, 13:32) *
А они не для "смотреть" smile.gif - они для работать.

Я хотел на кнопочки посмотреть, оформление, эргономичность.
HARMHARM
Цитата(kolisnichenko_r @ Jul 21 2009, 15:23) *
Я хотел на кнопочки посмотреть, оформление, эргономичность.

А зачем там кнопочки? Командная строка!
kolisnichenko_r
Цитата(HARMHARM @ Jul 21 2009, 15:26) *
А зачем там кнопочки? Командная строка!

Заказчик требует кнопочки, мышка им удобнее.
zltigo
Цитата(kolisnichenko_r @ Jul 21 2009, 15:23) *
Я хотел на кнопочки посмотреть, оформление, эргономичность.

Есть и GUI-шные вещи. Писаны без прибамбасов. Интерфейсы спокойные в стиле родных Win2000. Собственно кнопочек по минимуму, в крайнем случае жмется на надпись (что-то в Web стиле) в выпадающих по хоткеям меню. Все чаще и чаще, пожалуй уже почти всегда используются и чистые Web интерфейсы, соответственно вся фигня с графическими надстройками идет лесом автоматически.
Цитата
Заказчик требует кнопочки, мышка им удобнее.

Если речь не идет о продукте с которым действительно человек будет ежедневно РАБОТАТЬ а не пару раз нажмет на какую-либо иконку и выкинет, то "простота работы" ввиде изобилия всяких интерфейсных прибамбасов это 100% иллюзия.
Заказчиков можно и нужно воспитывать, а с особо трудовоспитуемыми просто не иметь дела.
kolisnichenko_r
Цитата(zltigo @ Jul 21 2009, 17:23) *
Заказчиков можно и нужно воспитывать, а с особо трудовоспитуемыми просто не иметь дела.

С заказчиком договоренность: делаю несколько вариантов заготовок - заказчик выберет, сделает замечания.
Воспитывать пока не тот статус, маловат багаж знаний.
o-henry
Цитата(zltigo @ Jul 21 2009, 17:23) *
Все чаще и чаще, пожалуй уже почти всегда используются и чистые Web интерфейсы, соответственно вся фигня с графическими надстройками идет лесом автоматически.

Проконсультируйте по организации таких интерфейсов:
Как взаимодействует программа, выполняющая полезную работу, с собственно Web интерфейсом?
zltigo
Цитата(o-henry @ Jul 23 2009, 15:08) *
Как взаимодействует программа, выполняющая полезную работу, с собственно Web интерфейсом?

Так же, как и если-бы она была на удаленной машине, только IP локальный. Вообще достаточно часто программы дробятся еще дальше (интерфейс_пользователя-движок-нечно_связанное_с_железом) и взаимодействуют между собой через сокеты.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.