24
25
26
27
28
29
30
31
32
33
34
35
MAKE_MENU(m_s2i1, m_s2i2, NULL_ENTRY, m_s1i1, NULL_ENTRY,
MENU_MODE1, "Режим 1");
MAKE_MENU(m_s2i2, m_s2i3, m_s2i1, m_s1i1, NULL_ENTRY,
MENU_MODE2, "Режим 2");
MAKE_MENU(m_s2i3, NULL_ENTRY,m_s2i2, m_s1i1, NULL_ENTRY,
MENU_MODE3, "Режим 3");
// подменю Настройка
MAKE_MENU(m_s3i1, m_s3i2, NULL_ENTRY, m_s1i2, m_s4i1, 0,
"Давление");
MAKE_MENU(m_s3i2, NULL_ENTRY,m_s3i1, m_s1i2, m_s5i1, 0, "Время");
// подменю Давление
MAKE_MENU(m_s4i1, m_s4i2, NULL_ENTRY, m_s3i1, NULL_ENTRY,
MENU_SENS1, "Датчик 1");
MAKE_MENU(m_s4i2, NULL_ENTRY,m_s4i1, m_s3i1, NULL_ENTRY,
MENU_SENS2, "Датчик 2");
// подменю Время
MAKE_MENU(m_s5i1, m_s5i2, NULL_ENTRY, m_s3i2, NULL_ENTRY,
MENU_WARM, "Разогрев");
MAKE_MENU(m_s5i2, NULL_ENTRY,m_s5i1, m_s3i2, NULL_ENTRY,
MENU_PROCESS, "Процесс");
Готово!
Естественно, пункты меню можно описывать и вперемешку, в порядке
обхода дерева. Типа такого:
1
2
3
4
5
6
MAKE_MENU(m_s1i1, m_s1i2, NULL_ENTRY, NULL_ENTRY, m_s2i1, 0,
"Запуск");
// подменю Запуск
MAKE_MENU(m_s2i1, m_s2i2, NULL_ENTRY, m_s1i1, NULL_ENTRY,
MENU_MODE1, "Режим 1");
MAKE_MENU(m_s2i2, m_s2i3, m_s2i1, m_s1i1, NULL_ENTRY,
MENU_MODE2, "Режим 2");
MAKE_MENU(m_s2i3, NULL_ENTRY,m_s2i2, m_s1i1, NULL_ENTRY,
MENU_MODE3, "Режим 3");
MAKE_MENU(m_s1i2, m_s1i3, m_s1i1, NULL_ENTRY, m_s3i1, 0, "Настройка");
Можно даже пойти дальше — строить меню в какой-нибудь визуальной
среде, а потом автоматически генерировать такой список. Но это на потом.
Плюсы и минусы такой организации. Минус — явная избыточность. Плюс —
возможность быстро редактировать меню — вставить новый пункт, поменять