Все для Sony Ericsson, патчи, эльфы, моддинг, прошивка
Логин: Пароль: Запомнить: Привет гость! Зарегистрируйся или авторизируйся для получения доп. возможностей!
Разделы
PDA версия сайта
Новости
Статьи
Файлы
Патчи
Патчи A2
Патчи db2020
Эльфы
Исходники эльфов
Wiki
Форум
Обратная связь
Развернуть/Свернуть
 
Развернуть/Свернуть

создать свой GUI легко : Эльфостроение : Эльфы : Форум : Для Sony Ericsson патчи эльфы моддинг прошивка
/  Список форумов
   /  Эльфы
      /  Эльфостроение
   /  создать свой GUI легко
На печать 
Правила 


den_po


Developer/Admin


Регистрация: 27.3.06
Сообщений: 3279
Репутация: 10763
Откуда: Чебоксары




 
  #1 [09.08.09, 11:28] создать свой GUI легко   

 
внимание! для нормальной компиляции выложенного тут кода требуется патч для IAR из темы MOV PC,Rx

тут уже есть примеры использования некоторых стандартных gui. а вот примеров создания gui с абсолютно своим поведением нет.
примеры можно найти на svn (BcfgEdit/EventControl/Gono4ki/...), но способ, которым они там создаются, заставляет описывать кучу мелочей, отвлекающих от написания контрола. да и лично мне в коде этих эльфов разбираться очень сложно.
для себя я сделал простую библиотеку классов. надеюсь, кому-то она облегчит работу.
для начала несколько слов о взаимосвязи объектов. BOOK имеет GUI, GUI имеет DISP_OBJ, а DISP_OBJ это непосредственно то, что мы видим, и с чем взаимодействуем (на самом деле DISP_OBJ имеет WINDOW, но нам это не нужно).
итак, чтобы прицепить контрол к книге, нужно создать GUI и DISP_OBJ.
при использовании данной библиотеки достаточно описать класс, описывающий DISP_OBJ.

Код: 
class CMyDisp:public CDispObjT<CMyDisp>
{
public:
  static char* getName();
  void onDraw(int a,int b,int c);
  void onKey(int key,int,int repeat,int type);
};

...

char* CMyDisp::getName()
{
  return "MyDisp";
}
  
void CMyDisp::onKey(int key,int,int repeat,int type)
{
// обрабатываем нажатия клавиш
}

void CMyDisp::onDraw(int a,int b,int c)
{
// рисуем
}

CMyDisp наследуется от шаблонного класса CDispObjT. при наследовании от этого шаблона обязательно нужно определить метод getName. остальные методы переопределять только по необходимости (список самих методов смотрите в описании классов в файле CL.H)

создание, использование и удаление GUI на основе нашего класса проще простого:
Код:
CGuiBase* gui = new CGuiT<CMyDisp>(book, 0);

gui->Show();
gui->SetStyle(1);
gui->Free();


в примере ещё используется CBook, но там всё просто, в класс CMyBook завёрнут функционал эльфа HelloWorld с свн.
вообще главная задача эльфа - показать работу с GUI. эльф рисует на экране квадратик, при нажатии на левый софт gui эльфа прячется (из букмана можно его вернуть), а при нажатии "назад" удаляется совсем.

собираюсь ещё добавить классов, чтоб быстро и легко переопределять поведение стандартных контролов (listmenu, inputstring итд). да и добавить методов в уже готовые классы не помешает.
есть вопросы, предложения? не стесняйтесь, пишите



Прикрепленный к сообщению файл:

cldemo.zip cldemo.zip (9.58 kb; 173 hits) Скачать файл


promt is better than google translate
Спасибо сказали: 273308715, nagmet, unfunk, DuXeN0N, Crong, DuMOHsmol, Rc, ELECTRO-NIC, Kitten85, scorpion16_Richi, diezil, SiLoN, Ну6иК, MoneyMasteR

mmcorp


Patcher/Elfmaker


Регистрация: 14.5.08
Сообщений: 358
Репутация: 2528
Откуда: Ржев




 
  #2 [08.10.09, 14:52] Re: создать свой GUI легко   

 
den_po, а можешь сделать что нибудь подобное с гви?




не занимаюсь эльфами и патчами (=
Siemens c75 -> SonyEricsson k610i + SonyEricsson w595 + SonyEricsson w580i -> HTC Desire Z

den_po


Developer/Admin


Регистрация: 27.3.06
Сообщений: 3279
Репутация: 10763
Откуда: Чебоксары




 
  #3 [08.10.09, 14:59] Re: создать свой GUI легко   

 
MoneyMasteR, там есть класс для GC. по его подобию несложно и для GVI сделать.


Добавлено 8.10.09 15:00

а вообще да, планировал. но сначала надо разобраться с а2, нужно, чтоб одинаково работало везде.




promt is better than google translate

den_po


Developer/Admin


Регистрация: 27.3.06
Сообщений: 3279
Репутация: 10763
Откуда: Чебоксары




 
  #4 [13.03.10, 21:19] Re: создать свой GUI легко   

 
выложил на свн classlib и два примера, использующие эту библиотеку: крестики-нолики (tictactoe) и virtualmethods.




promt is better than google translate
Спасибо сказали: DuMOHsmol, SiLoN, Yoti, JohnNorth


Похожие темы

  • Поиск
  • Права
Вы не можете начинать темы.
Вы не можете редактировать свои сообщения.
Вы не можете создавать опросы.
Вы не можете вкладывать файлы в сообщения.
Вы не можете отвечать на сообщения.
Вы не можете удалять свои сообщения.
Вы не можете голосовать.

Главная Новости Статьи Файлы Патчи Форум Опросы PDA
- Генерация страницы: 0.03 секунд | 11 Запросов | HTML: 33.68 КБ -