Под экран с контроллером ILI9320 написал простейшую оконную библиотеку. Вот примеры её работы: И небольшое видео:
http://www.youtube.com/watch?v=YdQxW8T8JhA
Библиотека написана на С++ и может работать с любыми дисплеями и точскринами (если конечно реализовать соответствующий класс дисплея или точскрина), а также на любых МК для которых есть C++-компилятор, а также достаточно памяти для её работы. Библиотека не использует динамического выделения памяти, а стек использует очень экономно. Сейчас она у меня используется на МК STM32F100R6T6B.
Вот пример кода главной формы (которая на первом скриншоте) с использованием данной библиотеки:
Спойлер
Код: Выделить всё
const wchar_t *text1[] = {L"Раз", L"Два", L"Три", NULL};
class TextForm : public muil::Form
{
public:
TextForm() :
muil::Form(L"Главное окно", &muil::tahoma14ru_FontInfo),
label_ (muil::Point( 30, 45), L"Метка"),
test_btn_(muil::Point( 30, 80), muil::Size(180, 40), L"Тестовая кнопка"),
up_down1_(muil::Point( 20, 140), muil::Size( 90, 40), 0, 42),
up_down2_(muil::Point(120, 140), muil::Size( 90, 40), 2, 314),
ch_box_ (muil::Point( 30, 190), muil::Size(180, 30), L"Чекбокс", true),
ch_ (muil::Point( 30, 230), muil::Size(180, 30), text1, 0)
{
}
void visit_all_widgets(muil::WidgetVisitor &visitor)
{
visitor.visit(label_);
visitor.visit(test_btn_);
visitor.visit(up_down1_);
visitor.visit(up_down2_);
visitor.visit(ch_box_);
visitor.visit(ch_);
}
void widget_event(muil::EventType type, const muil::Widget *widget)
{
if ((type == muil::EVENT_TOUCHSCREEN_UP) && (widget == &test_btn_))
{
ModalForm form;
form.show_modal();
}
}
private:
muil::Label label_;
muil::Button test_btn_;
muil::UpDownWidget up_down1_;
muil::UpDownWidget up_down2_;
muil::CheckBox ch_box_;
muil::StringsChoice ch_;
};





