list->next->next->doun=menu(list->next->next,5,xfir+s*2,yfir+sh+2,versh[3]);
list->pred->pred->doun=menu(list->pred->pred,2,xfir+s*3,yfir+sh+2,versh[4]);
list->pred->doun=menu(list->pred,3,xfir+s*4,yfir+sh+2,versh[5]);
//------------ Строится третий уровень
//------------- Первое подменю
list->doun->doun=menu(list->doun,3,
xfir+123,yfir+sh+8,versh[6]);
list->doun->next->doun=menu(list->doun->next,4,
xfir+123,yfir+2*sh+8,versh[7]);
//------------- Второе подменю -----------------
list->next->doun->pred->pred->doun=menu(list->next->doun->pred->pred,2,
xfir+s+123,yfir+4*sh+8,versh[8]);
list->next->doun->pred->doun=menu(list->next->doun->pred
,5,xfir+s+123,yfir+5*sh+8,versh[9]);
//------------ Третье подменю -------------------
list->next->next->doun->doun=menu(list->
next->next->doun,4,xfir+2*s+123,yfir+2*sh+8,versh[10]);
list->next->next->doun->next->doun
=menu(list->next->next->doun->next,5,
xfir+2*s+123,yfir+3*sh+8,versh[11]);
list->next->next->doun->pred->doun=
menu(list->next->next->doun->pred,2,
xfir+2*s+123,yfir+4*sh+8,versh[12]);
//------------ Четвертое подменю ------------------
list->pred->pred->doun->next->doun
=menu(list->pred->pred->doun->next,4,
xfir+3*s+123,yfir+2*sh+8,versh[13]);
//------------ Пятое подменю -------------------
list->pred->doun->doun=
menu(list->pred->doun,3,xfir+4*s-123,yfir+sh+8,versh[14]);
list->pred->doun->next->doun
=menu(list->pred->doun->next,5,
xfir+4*s-123,yfir+2*sh+8,versh[15]);
return(list);
}
void Block(int x,int y,int le,int hi,int col,// Функция вывода
char *text,int coltext) // пункта меню
{ setfillstyle(1,col);
bar(x,y,x+le ,y+hi); //Выделение текущего контура
setcolor(7);
line(x,y,x,y+hi);
line(x+1,y,x+1,y+hi);
line(x,y+hi-1,x+le,y+hi-1);line(x,y+hi,x+le,y+hi);
line(x,y,x+le,y);line(x+1,y+1,x+le,y+1);
line(x+le-1,y,x+le-1,y+hi-1);line(x+le,y,x+le,y+hi);
setcolor(coltext);
outtextxy(x+5,y+hi/2-3,text);// Выводится название пункта
};
void Window() // Функция вывода табло меню
{ int x,y;x=getmaxx();y=getmaxy();
setcolor(9);line(10,10,10,y-10);line(12,10,12,y-10); // Рисуется рамка
line(12,y-12,x-12,y-12);line(10,y-10,x-10,y-10);
setcolor(9);line(x-11,11,x-11,y-11);line(x-12,12,x-12,y-12);
line(12,12,x-12,12);line(11,11,x-11,11);
setfillstyle(10,fon);bar(13,13,x-13,y-13);
Block(13,410,x-26,y-430,7,"",0); //Контур под горячие клавиши
Block(12,y-40,x-26,27,7, //Котур под последнюю строку
" Выполнила студентка гр.ПМ-43 Наумик Е.В.",8);
setcolor(8);
outtextxy(50,425,"F10 ");outtextxy(190,425,"F8 ");
outtextxy(320,425,"F9 ");
setcolor(0);
outtextxy(60,425," Menu");
outtextxy(200,425," Help");
outtextxy(360,425," Exit" );
}
void Yes(tree *list) // Функция вывода активного пункта
{ Block(list->x,list->y,s,sh,9,list->text,4); }
void No(tree *list) // Функция вывода не активного пункта
{ Block (list->x,list->y,s,sh,7,list->text,0); }
void BuildUr(tree *list) // Фунция вывода подъменю пункта
{ tree *p;p=list->next;
while(p!=list){
No(p);p=p->next;}
}
void DelUr(tree *p) // Функция DelUr затирает подъменю пункта
{ if (p!=null){
tree *list;list=p->doun;
do{ setfillstyle(10,fon); //Закраска текущего пункта
bar(list->x,list->y,list->x+s,list->y+sh);
if(list->doun!=null) DelUr(list);
list=list->next;}
while(list!=p->doun);
}
}
int Letter(tree *p) // Функция вывода исполняемого пункта при
{ int l1=0,l2=0; // нажатии клавиши Enter
if (p->doun==null) // Если находимся в самом нижнем подменю,
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.