Класс для создания своего GUI : Эльфостроение : Форум


 arban:
30.05.11, 11:34
 Всем привет. Давно эту штуку сделал, но так и не выкладывал. Это класс для создания своего интерфейса в виде списка для эльфа. Пример работы можно видеть в ZBinLauncher.

Немного расскажу о методах

int GetItemsNum() возвращает количество элементов в списке
int GetMoreNum() возвращает количество элементов в дополнительном меню
int GetKeyNum() возвращает количество кнопок, назначенных на какие-либо действия
int GetCondNum() возвращает количество условий
int GetSelected() возвращает выделенный элемент
int GetMoreSelected() возвращает выделенный элемент в дополнительном меню
bool IsMore() возвращает истину, если открыто дополнительное меню
void SetTitle(wchar_t * txt) устанавливает заголовок
int LoadLayout(wchar_t * file) загружает файл с настройками интерфейса
GITEM * GetItem(int index) возвращает элемент с нужным индексом
LAYOUT * GetLayout() возвращает структуру с информацией о настройках интерфейса
Sort_(int(*cmp_proc)(void * s1, void * s2)) сортирует элементы, используя callback-функцию для сравнения двух элементов. Сортировка Шелла
void Sort_2() сортирует элементы по возрастанию. Пузырьковая сортировка

GITEM * AddItem(wchar_t * name, wchar_t * second_line, wchar_t iconid, void(*action)( CBookBase*book, CGuiBase* ),void*add_data) добавляет новый элемент в список
name - название
second_line - подпись под названием (если нужна)
iconid - иконка
action - действие, выполняющееся при выборе элемента
add_data - дополнительные данные, добавляемые в структуру элемента


GITEM * AddDynItem(wchar_t * name, wchar_t * second_line, wchar_t iconid, void(*action)( CBookBase*book, CGuiBase* ),di_arg,void*add_data) добавляет динамический элемент в список
name - название
second_line - подпись под названием (если нужна)
iconid - иконка
action - действие, выполняющееся при выборе элемента
add_data - дополнительные данные, добавляемые в структуру элемента
di_arg - callback-функция вида void(*cond)(GITEM*gi,int index,CBookBase*book, CGuiBase*g), необходимая для проверки условий или для выполнения чего-либо. Необходима для изменения названия, иконки, действия и т.д. этого пункта.



void AddMoreItem(wchar_t * name, wchar_t iconid, void(*action)( CBookBase*book, CGuiBase* ))добавляет элемент в дополнительное меню
name - название
iconid - иконка
action - действие, выполняющееся при выборе элемента


void AddKeyAction(int key, int mode, void(*action)( CBookBase*book, CGuiBase* )) назначает на определенную кнопку определенное действие
key - кнопка
mode - режим нажатия
action - действие


void AddCondition(bool (*condition)(), void(*action)( CBookBase*book, CGuiBase* )) добавляет условие, при истинности которого будет выполняться нужное действие.
condition - callback-функция. Если возвращает истину, то выполняется действие
action - действие


Константы

EMPTY_ACTION - пустое действие, используется в AddItem, AddDynItem, AddCondition
SELECT_ACTION - выбор пункта, используется в AddKey
OPEN_MORE_ACTION - открытие дополнительного меню, используется в AddKey
CLOSE_MORE_ACTION - закрытие дополнительного меню, используется в AddKey

Знаю, что все довольно мутно. Надеюсь, что кому-то это пригодиться и можно будет продолжить разработку.

Прикладываю также исходник ZBinLauncher. В "поставку" включен также класс для удобной работой с файлами.

[ Редактировано arban в 30.5.11 12:03 ]

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

api.zip api.zip (11.70 kb; 53 hits) Скачать файл
ZBinLauncher.zip ZBinLauncher.zip (9.43 kb; 44 hits) Скачать файл

URL этой темы:
https://mobilefree.justdanpo.ru/newbb_plus/viewtopic.php?topic_id=5387

© 2005-2018 supertrubka.org