Каждый уважающий себя программист хоть раз в жизни задавался вопросом - а трудно ли сделать самому свою (нативную) отрисовку для разных базовых графических сущностей: лэйблы, комбобоксы, текстовые поля, списки, таблицы.
Это и есть gui фреймворк.
Отрисовка графических об'ектов это и есть самая сложная (об'емная) часть фреймворков. На самом деле таких фреймворков по пальцам пересчитать: Qt, wxWidgets, GTK и ещё немного примеров.
WUI от Антона Головкова
И вот как всегда случайно наткнулись на статью на Хабре, где кто-то открыл миру свой небольшой gui фреймворк на стандарте С++17, который уже обкатывался в реальных проектах.
Лицензия Буст
Главное сразу отметить это лицензия Буст, то есть без ограничений используй в своих закрытых коммерческих проектах и только не забывай отмечать кому ты обязан своим успехом
Сборка без проблемм
Скачиваем с гитхаба библиотеки libwui с демо примерами, устанавливаем MSVS 2020 под виндой и сразу все собирается нормально и можно посмотреть демо примеры - хорошая новость.
Лезем в код
Итак выбираем спокойный день и сначала в спокойно пытаемся в'ехать в общую логику кода.
Смотрим сначала классы window, control, graphic и наблюдаем, что кода не много.
Все на наш взгляд обзывается все логично и понятно, во всяком случае нам для нашего понимания очень близко.
Что приятно - не используются какие-то препроцессоры типа moc (так выкручивались в Qt4 С++98), все это решается через лямбда функции (С++11)
Ставим себе небольшую задачу
Так как у нас был опыт отрисовки своей таблицы в Qt, разбираемся как реализовать что-то наподобие таблицы для работы с базой данных. Находим класс list и пытаемся вникнуть в код.
Что получилось обязатель напишем далее.