Решил попробовать представить основные элементы интерфейса как классы (пока есть только окно, надпись и кнопка). Целью было облегчить создание программ под KolibriOS и сделать проще обработку событий (клик по кнопке например).
Для теста создал окно с надписью и кнопкой. При клике по кнопке меняется текст и цвет надписи и фон кнопки.
Код получился вот такой:
Spoiler:
void Event::call(int action) {
if (actions[action] == NULL) return;
int i;
void (*hnd)();// Указатель
for (i=1;i<5;i++) {
hnd = actions[action]->handlers.Peek(i); // actions[action]->handlers - стек
// В hnd заносится адрес указателя на функцию
if (hnd != NULL) hnd(); // Программа закрывается на этом месте, если эту строку убрать - то не закрывается
}
}
я использовал класс стека отсюда http://cppstudio.com/post/5155/
Пробовал по всякому, не работает
Если получится, будет как мне кажется красивый и удобный способ устанавливать обработчики для событий элементов:
Убрал стек и сделал хранение обработчиков через массив указателей на функции.
Для тестирования работы сделал простенькую программку, в которой можно управлять кнопкой.
Управление:
W - вверх
S - вниз
D - вправо
A - влево
Клик по кнопке вернёт её в начальное положение
Теперь хочу добавить другие элементы интерфейса - поле для ввода текста, флажки и т.д.. Буду пытаться понять принцип подключения box_lib из приложения table
А ещё нужно как-то поправить хранение этих элементов в классе, для каждого типа элемента (кнопка, надпись) сейчас создан отдельный массив указателей и переменная (хранит номер последнего элемента в массиве)
Как думаете, что ещё можно добавить?
Если смогу, то как мне кажется, можно будет использовать мои классы как библиотеку для облегчения разработки.
Например хотелось бы использовать контейнеры vector и map. Они есть под Kolibri?
P. S. Как я писал ранее, в C++ я новичок, изучаю около месяца (и то не каждый день) в свободное время. Может для моих целей можно использовать что-нибудь другое
Nikolai1 wrote:P. S. Как я писал ранее, в C++ я новичок, изучаю около месяца (и то не каждый день) в свободное время. Может для моих целей можно использовать что-нибудь другое
Можно. Лучший язык программирования в Колибри для новичков это Assembler++.