Написание программы на языке Borland C++, которая работает под ОС MS-DOS и ее краткая характеристика, страница 2

    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)    // Если находимся в самом нижнем подменю,