Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Библиотека визуалиьных компонент Amy Gui


Автор: DCODE 3.7.2010, 15:37
Amy Gui это библиотека классов для C++ предназначенных для разработки программ с графическим интерфейсом с использованием объектно-событийной модели программирования. В библиотеке есть всё необходимое: кнопки, списки, меню, чек-боксы,  пр. что значительно облегчает разработку программ с графическим интерфейсом. Amy Gui сейчас в разработке и постоянно обновляется, добавляются новые компоненты. Сейчас доступна бесплатная бета версия по сайту http://www.DimonCode.ho.ua. В архиве присутствует сама библиотека, и примеры со справкой которая тоже пока разрабатывается.

Итак, что нужно для использования библиотеки AmyGui? Для начала нужно скачать библиотеку на сайте по адресу:  http://www.DimonCode.ho.ua, на этом сайте вы с лёгкостью найдёте ссылку на архив с библиотекой. В архиве есть папка AmyEngine с заголовочными файлами и статической библиотекой amy.lib (папка AmyEngine/lib/vc) для Visual C++.

Для того чтобы написать простую программу с использованием Amy Gui запустите Ваш Visual C++. Создайте пустое консольное приложение, теперь создайте файл main.cpp и добавьте следующий код.



Код


//подключим заголовочный файл Amy.h
#include "Amy.h"



//объявим использываемые пространства имён
using namespace amy;
using namespace amy_gui;


Amy app;//объявим экземпляр приложения




//это функция - обработчик события OnClick кнопки, шаблон функции 
//для всех обработчиков событий всегда должен быть таким: void FuncName(AmyGuiMessage)
void button_OnClick_Event(AmyGuiMessage msg)
{
    amy_core::amyShowMessage("Hello World!!!", "button click event"); 
}



int main()
{

 //сначала создаём движок приложения, вызвав метод Create()
 app.Create();

 //эта сторчка просто устанавливает строку в окне приложения
 app.device.SetWindowCaption("Простое приложение Amy Gui");   


 //на этом инициализация приложения закончена.


 //далее создадим объект - кнопку AmyButton, вызвав у окружения гуи метод CreateButton().
 //Функция создаст кнопку, зарегистрирует её в окружении гуи, и возвратит указатель на объект
 AmyButton *button = app.gui.CreateButton();

 //далее отредактируем некоторые свойства кнопки на начальные
 button->Left = 100;
 button->Top  = 100;
 button->Caption = "Нажми!";
 
 //сдесь в событии OnClick регистрируется функция которая будет 
 //запускаться как обработчик события OnClick данной кнопки (функция определена вверху)
 button->OnClick = button_OnClick_Event;

 
 //этот фрагмент кода создаёт главное меню приложения, и несколько элементов меню
 AmyMainMenu* mainmenu = app.gui.CreateMainMenu();//создаём главное меню
 AmyMainMenuButton *mbfile=mainmenu->AddMenuButton("Файл");//создаём кнопку "File" главного меню 
    AmyPopupMenu *filepop=mbfile->CreateSubmenu();//для кнопки "File" создадим выпадающее меню 
 
    // и в созданное выпадающее меню добавим пару кнопок
    filepop->AddMenuButton("Новый", "Ctrl + N", true);
    filepop->AddMenuButton("Открыть", "Ctrl + O", false);
    filepop->AddMenuButton("Сохранить", "Ctrl + S", false);


     //теперь запускаем бесконечный цикл приложения, пока приложение работает,
     //тоесть app.Run()==true, выполнять безконечный цикл приложения
     while(app.Run())
     {

     }


  //перед закрытием вызовим функцию уничтожения движка приложения
  app.Close();

 return 0;
}






Для того чтобы откомпилировать программу укажите в свойствах проекта расположение дополнительных каталогов включения, указав расположение папки AmyEngine, и дополнительные каталоги библиотек для компоновщика указав папку AmyEngine\lib\vc. После откомпилируйте программу.


Пишите что вы думаете, спрашивайте что непонятно.  smile 




Автор: boostcoder 3.7.2010, 22:27
Цитата(DCODE @  3.7.2010,  15:37 Найти цитируемый пост)
Сейчас доступна бесплатная бета версия 

а вы планируете в будущем сделать ее платной?

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

Автор: DCODE 3.7.2010, 23:33
Цитата(boostcoder @  3.7.2010,  22:27 Найти цитируемый пост)
а вы планируете в будущем сделать ее платной?


Да. Но цена не будет огромной, в пределах средней цены на shareware. К тому же бесплатная версия будет достаточно функциональной. 


Цитата(boostcoder @  3.7.2010,  22:27 Найти цитируемый пост)
кроме микрософтстудии, другие компиляторы не поддерживаются?

Скоро будут поддерживаться и другие компилятооры.

Цитата(boostcoder @  3.7.2010,  22:27 Найти цитируемый пост)
исходники что, закрытые? 

Да. smile 

Автор: boostcoder 3.7.2010, 23:57
мдя.. да у вас проблема с самомнением. случайно не вы "создатель" bolgenos  smile 

Автор: DCODE 4.7.2010, 00:02
Цитата(boostcoder @  3.7.2010,  23:57 Найти цитируемый пост)
мдя.. да у вас проблема с самомнением. случайно не вы "создатель" bolgenos    


Нет, плагиатом не занимаюсь. Хотелось бы узнать что вам непонравилось?

Автор: boostcoder 4.7.2010, 00:15
Цитата(DCODE @  4.7.2010,  00:02 Найти цитируемый пост)
Хотелось бы узнать что вам непонравилось?

1. не понравилось то, что вы собираетесь продавать "это", в то время, как пользуетесь ворованной копией микрософтстудии и(или) вендавс.
2. есть огромное кол-во OpenSource либ, решающих подобные задачи, но в мильён раз лучше вашей по все показателям smile 
продолжать не стОит..все банальное..

Автор: toxx 4.7.2010, 01:48
DCODE
да уж, об опенсорсах вы ничего не слышали точно

Автор: borisbn 4.7.2010, 07:57
У Nokia появился серьёзный конкурент smile

Автор: DCODE 4.7.2010, 14:03
Цитата(boostcoder @  4.7.2010,  00:15 Найти цитируемый пост)
1. не понравилось то, что вы собираетесь продавать "это", в то время, как пользуетесь ворованной копией микрософтстудии и(или) вендавс.


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

Цитата(boostcoder @  4.7.2010,  00:15 Найти цитируемый пост)
... но в мильён раз лучше вашей по все показателям  


Пока может да. 

Автор: toxx 4.7.2010, 14:12
DCODE
удачи вам в ваших начинаниях=)

Автор: W4FhLF 4.7.2010, 14:53
Всё что можно сделать в интерфейсе библиотеки типа Qt и wxWidgets уже сделали. Причём сделали это очень качественно и эффективно, с т.з. архитектуры, интерфейсов, быстродействия и удобства разработки (справка, примеры, сообщество, инструменты). У Qt на это ушло больше 10 лет, сейчас в библиотеке ~6 млн. строк кода. Над Qt работают больше 40 высококлассных специалистов, у них есть продуманный план развития, опыт и хорошее финансирование от компании с доходами миллиарды долларов. И для программиста всё это абсолютно бесплатно и открыто. 

Если ваш интерес чисто академический, то тут как бы нет вопросов, но коммерческие мотивы вашей деятельности говорят о том, что вы просто не в курсе текущего состояния в области разработки GUI на С++. Вы выбрали неправильный путь развития и вообще нишу. 

Однако это не значит, что никакие библиотеки связанные с GUI сегодня ненужны. Можно. Например, очень туго обстоят дела с графикой (не 3D) для С++. Т.е. если вы, например, создатите аналог http://www.steema.com/ для С++ (для Qt в частности), то закроете большой пробел. За несколько сотен долларов я бы такой компонент купил хоть завтра и знаю ещё с десяток компаний, которые бы сделали тоже самое. 


Автор: Alca 4.7.2010, 15:56
Цитата

 И для программиста всё это абсолютно бесплатно и открыто

А где гарантия того, что ее не сделают платной?

Автор: mes 4.7.2010, 16:03
Цитата(Alca @  4.7.2010,  14:56 Найти цитируемый пост)
А где гарантия того, что ее не сделают платной? 

лицензия.. 
smile

Автор: Alca 4.7.2010, 16:05
А что лицензию нельзя "отменить"?

Автор: mes 4.7.2010, 16:24
Цитата(Alca @  4.7.2010,  15:05 Найти цитируемый пост)
А что лицензию нельзя "отменить"?

выражаясь вашим языком: "нет"

Автор: W4FhLF 4.7.2010, 16:42
Как проект GPL/LGPL может одним днём стать закрытым? В любом случае это будет означать, что всё, что есть на текущий день будет так же подчиняться этим лицензиям, а появится другая "платная" ветка. Но вообще в отношении Qt этого не произойдёт, ибо только год назад они перешли на с открытой GPL на ещё более либеральную LGPL. 

Автор: Amp 4.7.2010, 21:04
Сходил по предложенной ТС ссылке - там что-то визуально очень страшное, использующее для отрисовки OpenGL. О нативном внешнем виде речи не идет. Приаттаченный пример запустился, но вообще никак не реагирует на события мыши - что-то про ошибку с PBuffer говорит.

Ближайшей альтернативой (в случае, если проект будет допилен) вижу только CeGUI, но никак не GTK или Qt.

Автор: boostcoder 4.7.2010, 21:16
Цитата(Amp @  4.7.2010,  21:04 Найти цитируемый пост)
Ближайшей альтернативой (в случае, если проект будет допилен) вижу только CeGUI, но никак не GTK или Qt.

поясните.

Автор: Amp 4.7.2010, 22:25
Цитата(boostcoder @  4.7.2010,  21:16 Найти цитируемый пост)
поясните. 

Единственным применением (в том виде, в котором проект сейчас находится) мне видится создание незамысловатого UI в OpenGL-приложениях - ну не на десктоп же такое тащить. В голове сразу же всплыл проект CeGUI. Затем на ум пришел Clutter, который позволяет использовать GTK+ (и аналогичные Qt-шные демки) но это иное т.к. эти решения построены на уже существующих мощных тулкитах. 

Автор: boostcoder 4.7.2010, 22:34
Amp, ах вот вы о чем. полностью согласен.

Автор: DCODE 5.7.2010, 16:18
Преспективы не очень, но проект будет развиваться заработаю или нет всёравно.

Автор: DCODE 5.7.2010, 16:40
Цитата(Amp @  4.7.2010,  21:04 Найти цитируемый пост)
Приаттаченный пример запустился, но вообще никак не реагирует на события мыши - что-то про ошибку с PBuffer говорит


если не секрет какая у вас видеокарточка?

Добавлено через 9 минут и 7 секунд
Цитата(W4FhLF @  4.7.2010,  14:53 Найти цитируемый пост)
Например, очень туго обстоят дела с графикой (не 3D) для С++.


Что вы имее в виду, отрисовка компонентов или их анимация, или...?

Автор: Amp 5.7.2010, 20:22
Цитата(DCODE @  5.7.2010,  16:40 Найти цитируемый пост)
если не секрет какая у вас видеокарточка?

Radeon HD2400 Mobility. Да и, насколько я помню, PBuffer сейчас считаются устаревшими, несколько медленными из-за постоянных переключений контекста и не очень удобным в плане программирования. Может стоит перелезть на FBO?

Автор: DCODE 5.7.2010, 20:55
Цитата(Amp @  5.7.2010,  20:22 Найти цитируемый пост)
Radeon HD2400 Mobility. Да и, насколько я помню, PBuffer сейчас считаются устаревшими, несколько медленными из-за постоянных переключений контекста и не очень удобным в плане программирования. Может стоит перелезть на FBO? 


Спасибо за совет. Надо попробоавть. А с радеонами всегда тяжело.

Автор: W4FhLF 6.7.2010, 09:11
Цитата(DCODE @  5.7.2010,  16:40 Найти цитируемый пост)
Что вы имее в виду, отрисовка компонентов или их анимация, или...?


Я это объяснил в своём сообщении и дал ссылку на пример того, что я имею ввиду. Что именно вам кажется непонятным?

Автор: DCODE 6.7.2010, 20:46
Теперь понятно smile 

Автор: chaos 12.7.2010, 15:36
https://svn.boost.org/svn/boost/sandbox/guigl/

Автор: Dem_max 12.7.2010, 16:00
прикрепленный пример не запускается, винда пишет user posted image

Автор: DCODE 13.7.2010, 18:16
Цитата(Dem_max @  12.7.2010,  16:00 Найти цитируемый пост)
прикрепленный пример не запускается, винда 


для работы программы нужен 3-й сервис пак для Windows, или просто обновить Microsoft .NET Framework до версии 2.0 или выше. Например у меня версия 3.5. Это связано стем что комиплятор VC++ использует наверно какието компоненты из фреймворка. 


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)