arban
Elfmaker
Регистрация: 2.3.08 Сообщений: 802 Репутация: 3111
|
#1 [30.05.11, 11:34] Класс для создания своего GUI
Всем привет. Давно эту штуку сделал, но так и не выкладывал. Это класс для создания своего интерфейса в виде списка для эльфа. Пример работы можно видеть в 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 ( 11.70 kb; 53 hits) Скачать файл ZBinLauncher.zip ( 9.43 kb; 44 hits) Скачать файл
|