Софт [API] MenuManager

Статус
В этой теме нельзя размещать новые ответы.

SR_team

like pancake
Автор темы
BH Team
4,809
6,487
Это менеджер меню, по типу очень сильно напоминает DXUT. Предназначен исключительно для SFAPI.
Особенности:
  1. Листинги - возможность создания списков с большим количеством строк и скроллбаром. Слишком длинные строки могут обрезаться, или разбиваться на несколько строк - зависит от того, как что вы хотите. При клтке по строке в листинге вызывается ваша функция, в которую передается номер строки, по которой вы кликнули и кнопка мыши, которой был осуществлен клик.
  2. Поля ввода - возможность создавать простые поля ввода
  3. Элементы - возможность создавать кликабельные элементы, при клике по которым будет вызвана ваша функция с передачей нажатой кнопки мыши в качестве параметра
  4. Тумблеры - Возможность создания переключателей (аналоги чекбоксов), при клике будет изменяться значение указанной вами переменной.
  5. Скролл как в АТБ - если вы расположите элементы управления ниже границ меню, то у меню появится скроллбар.
  6. Кастомизация - вы можете задать любые цвета и размеры для меню и его элементов

Меню целиком построенно на классах, но с целью скрыть функции обработчиков (рисование и события), функционал был экспортирован через отдельные функции и заново собран в класс уже в .h файле, который вы подключаете.
  • Menu - конструктор.
Title - заголовок меню.
X, Y - координаты (если оставить стандартные, то все меню будут создаваться каскадом как в ATB).
W, H - размеры.
BackgroundColor - основной цвет меню.
TextColor - цвет текста в меню.
present - определяет будет ли показано меню сразу после создания.
Private - определяет приватное ли это меню, если приватное, то его указатель нельзя получить по названию заголовка.
  • ~Menu - деструктор (нужен для удаления меню)
  • AddListing - добавляет листинг в меню. Возвращает ID добавленного листинга
X, Y - позиция в меню
W, H - размеры
pFunc - _stdcall (CALLBACK) функция, которая будет вызвана при клике по строкам в листинге
  • AddTextOnListing - добавляет строку с текстом в листинг. Возвращает ID этой строки
ID - ID листинга (далее не пишу это)
text - текст строки
  • AddTextLBOnListing - функция аналогично предыдущей, но имеет LB (LineBreak) - перенос строки.
  • RemoveListing - удаляет листинг
  • RemoveTextFromListing - удаляет строку из листинга по тексту строки
  • RemoveTextFromListing - удаляет строку из листинга по id строки
  • IsEmpty - проверяет пуст ли листинг
  • GetListingPos - получает координаты листинга в меню
  • GetListingSize - получает размеры листинга
  • GetIDByTextOnListing - получает ID строки по тексту
  • GetScrollBarPos - получает позицию скроллбара
  • GetTextOnListingByID - получает текст строки по ID
  • SetListingPos - Устанавливает новые координаты листингу в меню
  • SetListingSize - устанавливает новые размеры листинга
  • SetScrollBarPos - устанавливает новую позицию скроллбару
  • SetListingReturn - меняет функцию возврата листингу
  • SetTextOnListingByID - задает новый текст строке по ID
  • ResetListing - удаляет все строки листинга и сбрасывает позицию скроллбара на 0
  • AddInputBox - Создает поле ввода в меню. Возвращает ID
X, Y - координаты в меню
W - длина
  • RemoveInputBox - Удаляет поле ввода
  • GetInputBoxText - получает текст из поля ввода
  • GetInputBoxPos - получает координаты поля ввода в меню
  • GetInputBoxW - получает длину поля ввода
  • isInput - проверяет, что одно из полей ввода текущего меню активно
  • SetInputBoxText - устанавливает текст в поле ввода
  • ResetInputBox - очищает поле ввода
  • SetInputBoxPos - устанавливает новые координаты полю ввода
  • SetInputBoxW - устанавливает новую длину поля ввода
  • AddElement - добавляет элемент в меню. Возвращает его ID
text - название элемента, которое будет отображаться в меню
X, Y - координаты
pFunc - Функция, которая будет вызвана при клике по элементу
  • RemoveElement - удаляет элемент из меню
  • GetElementText - получает текст элемента
  • GetElementPos - получает координаты элемента в меню
  • SetElementText - задает новый текст элементу
  • SetElementPos - задает новые координаты в меню элементу
  • SetElementReturn - задает новую функцию для вызова при клике
  • AddTumbler - добавляет переключатель в меню
text - название переключателя, которое будет отображаться в меню
X, Y - координаты переключателя в меню
Func - переменная, значение которой будет изменятся при клике по переключателю
Color - цвет текста переключателя, когда он активен
  • RemoveTumbler - удаление переключателя из меню
  • GetTumblerText - получение текста переключателя
  • GetTumblerPos - получение позиции переключателя
  • GetTumblerColor - получение цвета переключателя, когда он активен
  • SetTumblerText - устанавливает новый текст переключателя
  • SetTumblerPos - устанавливает новые координаты переключателя в меню
  • SetTumblerReturn - устанавливает новую переменную, которая будет изменяться при клике по переключателю
  • SetTumblerColor - устанавливает новый цвет текста для активного состояния переключателя
  • GetTitle - получает заголовок меню
  • GetPosition - получает координаты меню (относительно разрешения экрана)
  • GetSize - получает размеры меню
  • IsPresent - проверяет отображается ли сейчас это меню
  • GetPrivateStatus - получает текущий статус приватности
  • GetScrollBarPos - получает позицию скроллбара
  • SetTitle - устанавливает новый заголовок меню
  • SetPosition - устанавливает новые координаты меню
  • SetSize - устанавливает новые размеры меню
  • SetPresent - устанавливает новое состояние меню (отображается/скрыто)
  • SetPrivateStatus - устанавливает новый приватный статус
  • SetScrollBarPos - устанавливает новую позицию скроллбара
  • GetCursorState - получает текущее состояние курсора
  • toggleCursor - устанавливает новое состояние курсора (включен/выключен)
  • GetMenuAddrByTitle - получает указатель на меню по его заголовку
  • MenuLoaded - проверяет загружен ли менеджер меню
  1. Количество меню не ограничено
  2. Количество элементов в меню (кликабельные элементы, поля ввода, переключатели, листинги) не ограничено
  3. Образец функции для листингов: void CALLBACK YourFunction(int ID, byte key);
  4. Образец функции для кликабельных элементов: void CALLBACK YourFunction(int key);
Это скрины старой версии, но для демонстрации построения очереди сойдет
TDLA5
3CyXf
Utvdg
Bocfl
 

Вложения

  • MenuManager.zip
    65.5 KB · Просмотры: 213
Последнее редактирование:
  • Нравится
Реакции: Rorian, Madison1337 и FYP

FYP

Известный
Администратор
1,764
5,924
простой пример использования был бы очень неплох, ведь понять как устроена библиотека иногда целое дело. а ещё хотя бы один скрин, чтобы иметь хоть какое-то представление об интерфейсе.
 

SR_team

like pancake
Автор темы
BH Team
4,809
6,487
простой пример использования был бы очень неплох, ведь понять как устроена библиотека иногда целое дело. а ещё хотя бы один скрин, чтобы иметь хоть какое-то представление об интерфейсе.
TDLA5
3CyXf
Utvdg
Bocfl

-----------------------------------------------------------------------------------------------
Добавлено спустя овердохуя времени:

Пример уже не актуален!
 

Вложения

  • MM_Example.zip
    316.6 KB · Просмотры: 47
Последнее редактирование:

unInstance

Новичок
Проверенный
311
224
Я так понял, юзеры должны установить себе это на клиент?
 

SR_team

like pancake
Автор темы
BH Team
4,809
6,487
Добавил получение адреса меню по заголовку, а так же статус приватности для меню.
Переделал InputBox, теперь можно вводить любые символы
Добавил функцию активации курсора для меню (только этим курсором можно взаимодействовать с меню)
 

SR_team

like pancake
Автор темы
BH Team
4,809
6,487
Добавлены переключатели
Элементы и листинги теперь вызывают колбеки
Курсор теперь не скрывается после вызова консоли
Вместо переопределяющих функций теперь экспортируется нормальный класс меню
 
  • Нравится
Реакции: By_Surse и mac

SR_team

like pancake
Автор темы
BH Team
4,809
6,487
Добавлен скроллбар для меню
Исправлены поля ввода
Добавлена функция проверки листинга на наличие строк
Добавлено форматирование добавляемого текста в элементы
Добавлена функция добавления строк в листинг с переносом строк, а не с обрезанием
Добавлены функции работы с скроллбаром

Ну и более менее нормальная документация :)
 
Статус
В этой теме нельзя размещать новые ответы.