Тест gui элементов
-
Здесь буду выслушивать идеи/рекомендации/баги элементовТехнологии меняют мир, а я - меняю технологии.
?
- Attachments
-
-
example (7.93 KiB)
- Как вам такая кнопка и события?
Downloaded 227 times
-
Технологии меняют мир, а я - меняю технологии.
инициализация в Си
button b;
b.click = #onMouseClick;
b.up = #onMouseUp;
b.down = #onMouseDown;
b.move = #onMouseMove;
b.caption = "test";
b.style = "width:150;height:20;top:30;left:30;";
b.create();
button b;
b.click = #onMouseClick;
b.up = #onMouseUp;
b.down = #onMouseDown;
b.move = #onMouseMove;
b.caption = "test";
b.style = "width:150;height:20;top:30;left:30;";
b.create();
Технологии меняют мир, а я - меняю технологии.
Можешь ещё скрины выкладывать. В меню, в категории разное есть screenShooter.
Внешний вид сейчас не самое критичное, главное архитектурно все сделать правильно. Можешь следующим меню сделать? Я бы начал в деле обкатывать сие творение, во время рвботы над читалкой.
to infinity and beyond
Дожили... Простое окно, с простой кнопкой - 8kb весит!
- Attachments
-
-
Screenshot.png (20.18 KiB)Viewed 7450 times
-
я из исходника лексер не убрал, + парсер css. И еще много чего. И без сжатия kpackYason wrote:Дожили... Простое окно, с простой кнопкой - 8kb весит!
Технологии меняют мир, а я - меняю технологии.
Вполне приемлимо.
Из хаоса в космос
Дабы не разводить лишние темы, пример реализации контекстного меню. Есть какие-нибудь замечания?
P.S.
Добавил вариант ввиде obj-библиотеки.
Как использовать
1) Вызываем kmenu_init и передаем ей структуру полученную через 48.3 (позже изменю архитектуру)
2) Создаем используя функцию ksubmenu_new нужное количество объектов меню.
3) Создаем и добавляем к меню новые элементы используя ksubmenu_add в паре с kmenuitem_new.
Функция kmenuitem_new понимает три типа элементов:
KMENUITEM_NORMAL - обычный пункт меню, третьим параметром kmenuitem_new примет ID кнопки, который потом пришлет библиотека по клику на этот пункт меню
KMENUITEM_SEPARATOR - рисуется разделитель
KMENUITEM_SUBMENU - пункт меню указывающий на вложенное меню, третьим параметром kmenuitem_new примет указатель на ksubmenu_t*
4) Для отображения меню вызвать функцию ksubmenu_draw, указав ей какое меню и в каких координатах вывести. Последний параметр всегда 0.
Для изменения состояния пунктов меню можно изменять параметры is_enabled и is_visible объекта kmenuitem_t.
Также можно назначить свою функцию отрисовки элементов меню, изменив указатель paint объекта kmenuitem_t
Управление мышкой и клавишами курсора + esc/enter
P.S.
Добавил вариант ввиде obj-библиотеки.
Как использовать
1) Вызываем kmenu_init и передаем ей структуру полученную через 48.3 (позже изменю архитектуру)
2) Создаем используя функцию ksubmenu_new нужное количество объектов меню.
3) Создаем и добавляем к меню новые элементы используя ksubmenu_add в паре с kmenuitem_new.
Функция kmenuitem_new понимает три типа элементов:
KMENUITEM_NORMAL - обычный пункт меню, третьим параметром kmenuitem_new примет ID кнопки, который потом пришлет библиотека по клику на этот пункт меню
KMENUITEM_SEPARATOR - рисуется разделитель
KMENUITEM_SUBMENU - пункт меню указывающий на вложенное меню, третьим параметром kmenuitem_new примет указатель на ksubmenu_t*
4) Для отображения меню вызвать функцию ksubmenu_draw, указав ей какое меню и в каких координатах вывести. Последний параметр всегда 0.
Code: Select all
// код инициализации из примера
kmenu_init(&theme);
menu = ksubmenu_new();
ksubmenu_add(menu, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 3", KMENUITEM_ID(3)));
ksubmenu_add(menu, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 4", KMENUITEM_ID(4)));
ksubmenu_add(menu, kmenuitem_new(KMENUITEM_SEPARATOR, NULL, NULL));
ksubmenu_add(menu, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 5", KMENUITEM_ID(5)));
ksubmenu_add(menu, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 6", KMENUITEM_ID(6)));
submenu1 = ksubmenu_new();
ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 3", KMENUITEM_ID(3)));
ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 4", KMENUITEM_ID(4)));
ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_SEPARATOR, NULL, NULL));
ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 5", KMENUITEM_ID(5)));
ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 6", KMENUITEM_ID(6)));
ksubmenu_add(menu, kmenuitem_new(KMENUITEM_SUBMENU, "submenu", submenu1));
submenu2 = ksubmenu_new();
ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 3", KMENUITEM_ID(3)));
ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 4", KMENUITEM_ID(4)));
ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_SEPARATOR, NULL, NULL));
ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 5", KMENUITEM_ID(5)));
ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 6", KMENUITEM_ID(6)));
ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_SUBMENU, "submenu", submenu2));
Также можно назначить свою функцию отрисовки элементов меню, изменив указатель paint объекта kmenuitem_t
Управление мышкой и клавишами курсора + esc/enter
- Attachments
-
-
libkmenu.zip (7.91 KiB)Downloaded 210 times
-
menu (25 KiB)Downloaded 204 times
-
Last edited by Veliant on Mon Jul 27, 2015 6:29 pm, edited 6 times in total.
Годно.
Из хаоса в космос
Не плохо, может лучше меню без создания нового процесса, а с помощью прорисовки?Veliant wrote:Дабы не разводить лишние темы, пример реализации контекстного меню. Есть какие-нибудь замечания?
P.S.
Добавил вариант ввиде obj-библиотеки.
Как использовать
1) Вызываем kmenu_init и передаем ей структуру полученную через 48.3 (позже изменю архитектуру)
2) Создаем используя функцию ksubmenu_new нужное количество объектов меню.
3) Создаем и добавляем к меню новые элементы используя ksubmenu_add в паре с kmenuitem_new.
Функция kmenuitem_new понимает три типа элементов:
KMENUITEM_NORMAL - обычный пункт меню, третьим параметром kmenuitem_new примет ID кнопки, который потом пришлет библиотека по клику на этот пункт меню
KMENUITEM_SEPARATOR - рисуется разделитель
KMENUITEM_SUBMENU - пункт меню указывающий на вложенное меню, третьим параметром kmenuitem_new примет указатель на ksubmenu_t*
4) Для отображения меню вызвать функцию ksubmenu_draw, указав ей какое меню и в каких координатах вывести. Последний параметр всегда 0.
Для изменения состояния пунктов меню можно изменять параметры is_enabled и is_visible объекта kmenuitem_t.Code: Select all
// код инициализации из примера kmenu_init(&theme); menu = ksubmenu_new(); ksubmenu_add(menu, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 3", KMENUITEM_ID(3))); ksubmenu_add(menu, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 4", KMENUITEM_ID(4))); ksubmenu_add(menu, kmenuitem_new(KMENUITEM_SEPARATOR, NULL, NULL)); ksubmenu_add(menu, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 5", KMENUITEM_ID(5))); ksubmenu_add(menu, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 6", KMENUITEM_ID(6))); submenu1 = ksubmenu_new(); ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 3", KMENUITEM_ID(3))); ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 4", KMENUITEM_ID(4))); ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_SEPARATOR, NULL, NULL)); ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 5", KMENUITEM_ID(5))); ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 6", KMENUITEM_ID(6))); ksubmenu_add(menu, kmenuitem_new(KMENUITEM_SUBMENU, "submenu", submenu1)); submenu2 = ksubmenu_new(); ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 3", KMENUITEM_ID(3))); ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 4", KMENUITEM_ID(4))); ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_SEPARATOR, NULL, NULL)); ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 5", KMENUITEM_ID(5))); ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 6", KMENUITEM_ID(6))); ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_SUBMENU, "submenu", submenu2));
Также можно назначить свою функцию отрисовки элементов меню, изменив указатель paint объекта kmenuitem_t
Управление мышкой и клавишами курсора + esc/enter
Технологии меняют мир, а я - меняю технологии.
Попытка реализации главного меню окна
- Attachments
-
-
menu (29 KiB)Downloaded 207 times
-
Вах! Тоже годно
Заголовок мелькает. Неплохо бы текст заголовка окна рисовать в картинку скина.
Заголовок мелькает. Неплохо бы текст заголовка окна рисовать в картинку скина.
Из хаоса в космос
Для этих целей было бы удобно, чтоб система позволяла создавать окна, которые не отображались бы на панели задач, и не переводили бы фокус на себя. А при потере фокуса происходило бы закрытие окна.
Тогда будет удобно рисовать меню, всплывающие подсказки, выпадающие списки
Тогда будет удобно рисовать меню, всплывающие подсказки, выпадающие списки
где можно найти код этих классов?pavelyakov wrote:инициализация в Си
button b;
b.click = #onMouseClick;
b.up = #onMouseUp;
b.down = #onMouseDown;
b.move = #onMouseMove;
b.caption = "test";
b.style = "width:150;height:20;top:30;left:30;";
b.create();
Чудеса случаются! Это вам любой программист скажет!
Who is online
Users browsing this forum: No registered users and 35 guests