Вот так например:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Al Volovich 14 апреля 2004 г. 12:45
В ответ на: Какие есть стандартные подходы реализации пользовательского меню? отправлено Paramedic 14 апреля 2004 г. 11:54

Надо будет как нибудь по этому поводу статейку тиснуть, а то периодически вопросы возникают... Вот для кейл С51


typedef struct TMenuItem{
char code* Caption; //название пункта меню
void (code*Exec)(void); //функция, вызываемая при выборе
struct TMenuItem code* Next; //следующее меню
};

//Далее объявление самих менюшек
const struct TMenuItem code* code MainMenu[];
const struct TMenuItem code* code ParamMenu[];

//Описание пунктов меню
//MainMenu
const struct TMenuItem code MainMenu1={"Параметры
",0,ParamMenu};//Параметры
const struct TMenuItem code MainMenu2={"Форма",0,FormMenu};//Форма
const struct TMenuItem code MainMenu3={"Режим",0,ModeMenu};//Режим

//ParamMenu
const struct TMenuItem code ParamMenu1={" const struct TMenuItem code ParamMenu2={"A__>ёїyгa",&AmplInput,0};
const struct TMenuItem code ParamMenu3={"C_eжe_ёe",&ShiftInput,0};

//Далее описываются менюшки
const struct TMenuItem code* code MainMenu[]={
&MainMenu1,
&MainMenu2,
&MainMenu3,
&MainMenu4,
&MainMenu5,
0,
MainMenu
};

const struct TMenuItem code* code ParamMenu[]={
&ParamMenu1,
&ParamMenu2,
&ParamMenu3,
0,
MainMenu
};

//то есть задаются массивы пунктов меню, в которых записываются все
//пункты, потом пишется ноль - окончание меню, затем записывается
//адрес меню уровнем выше

//Потом объявляем указатель на текущее меню
struct TMenuItem code*code* CurMenu; //указатель на текущее меню
//И уже с его помощью перемещаемся вверх-вниз по дереву меню


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru