//#########################################################################
//##              Г Р А Ф И Ч Е С К А Я   О Б О Л О Ч К А                ##
//##         "  Отображение функции ,задаваемой аналитическим путём  "   ##
//##        обработчик клавиатуры  и селектор режимов работы   		 ##
//## студент    :    Ратаев М.Ю.                                         ##
//#########################################################################


  float deltaX=0.2,deltaY=0.2,deltaZ=0.1,deltaParam=.001,deltaE=.00001;
  int prii;

//_________________________________________________________________________
//|  обработчик клавиатуры  и селектор режимов работы                     |
//|_______________________________________________________________________|
void HendEvent( )
{  int c,l;

  while( flagWork!=1 )
   {
       switch( flagNew )  // Обновление картинки на экране
      {
	case 0:  break;
	case 1: VideoGraf(10,10,400,400);
		break;
	case 2: StatusStr(10,430,getmaxx()-10,getmaxy()-10);
		break;
	case 3: HelpWindow(410,10,getmaxx()-10,400);
		break;
	case 4: StatusStr(10,430,getmaxx()-10,getmaxy()-10);
		VideoGraf(10,10,400,400);
		break;
	case 5: StatusStr(10,430,getmaxx()-10,getmaxy()-10);
		HelpWindow(410,10,getmaxx()-10,400);
		VideoGraf(10,10,400,400);

		break;
	case 6:	VideoGraf(10,10,400,400); break;

	case 7: StatusStr(10,430,getmaxx()-10,getmaxy()-10);
		ParamWindow(410,10,getmaxx()-10,400,0);break;
	case 8:	ParamWindow(410,10,getmaxx()-10,400,flagParam);break;
	case 9: StatusStr(10,430,getmaxx()-10,getmaxy()-10);
		ParamWindow(410,10,getmaxx()-10,400,0);
		VideoGraf(10,10,400,400); break;
      }
//     flagNew=0;
  while (kbhit()) getch();
   // ввод следующего управляющего символа
//      for(l=0;l<2;l++)
     if(( c=getch())==0) c=getch();
      switch(c)
       {
	case 112:  flagMODE='P'; flagNew=2; break ;//  'P'
	case 109:  flagMODE='M'; flagNew=2; break ;//  'M'
	case 99:   flagMODE='C'; flagNew=7; break ;//  'C'
	case 105:  flagMODE='I'; flagNew=2; break ;//  'I'
	case 111:  flagMODE='O'; flagNew=2; break ;//  'O'
	case 101:  flagMODE='E'; flagNew=2; break ;//  'E'
	case 63:   flagNew=3   ; break ;	 //  '?'
//      case 113:  ;                             //  'Q'
//	case 97:   ;                             //  'A'
//	case 98:   ;                             //  'B'
//	case 103:  ;                             //  'G'

	case 72:                                 //  стрелка вверх
		   switch(flagMODE)
		     { case 'P': Xg[1]+=deltaY*Ydel;Yg[1]+=deltaY*Ydel;
				 flagNew=4;
					break ;
		       case 'M': Xg[1]-=deltaY*Ydel;Yg[1]+=deltaY*Ydel;
				 flagNew=4;
					break ;
		       case 'C': if(flagParam<2)
				      flagParam=0;
				   else
				      { flagParam--;flagNew=8;}
					break ;
		       case 'I':        break ;
		       case 'O':        break ;
		     }
		   break;
	case 80:                                 //  стрелка вниз
		   switch(flagMODE)
		     { case 'P': Xg[1]-=deltaY*Ydel;Yg[1]-=deltaY*Ydel;
				 flagNew=4;
					break ;
		       case 'M': Xg[1]+=deltaY*Ydel;Yg[1]-=deltaY*Ydel;
				 flagNew=4;
					break ;
		       case 'C': if(flagParam>5)
				      flagParam=6;
				   else
				      { flagParam++;flagNew=8;}
					break ;
		       case 'I':        break ;
		       case 'O':        break ;
		     }
		   break;
	case 77:                                 //  стрелка вправо
		   switch(flagMODE)
		     { case 'P': Xg[0]+=deltaX*Xdel;Yg[0]+=deltaX*Xdel;
				 flagNew=4;
					break ;
		       case 'M': Xg[0]+=deltaX*Xdel;Yg[0]-=deltaX*Xdel;
				 flagNew=4;
					break ;
		       case 'C':switch(flagParam)
				  { case 0:break;
				    case 1:alfa-=deltaParam;
					   if(alfa<0) alfa=0;break;
				    case 2:betta-=deltaParam;
					   if(betta<0) betta=0; break;
				    case 3:gamma-=deltaParam;
					   if(gamma<0) gamma=0; break;
				    case 4:delta-=deltaParam;
					   if(delta<0) delta=0; break;
				    case 5:e-=deltaE;
					   if(e<0) e=0; break;
				    case 6:T1-=deltaParam;
					   if(T1<=0) T1=deltaParam;break;
				  }
					break ;
		       case 'I':        break ;
		       case 'O':        break ;
		     }
		   break;
	case 75:                                 //  стрелка влево
		   switch(flagMODE)
		     { case 'P': Xg[0]-=deltaX*Xdel;Yg[0]-=deltaX*Xdel;
				 flagNew=4;
					break ;
		       case 'M': Xg[0]-=deltaX*Xdel;Yg[0]+=deltaX*Xdel;
				 flagNew=4;
					break ;
		       case 'C':switch(flagParam)
				  { case 0:break;
				    case 1:alfa+=deltaParam;break;
				    case 2:betta+=deltaParam;break;
				    case 3:gamma+=deltaParam;break;
				    case 4:delta+=deltaParam;break;
				    case 5:e+=deltaE;break;
				    case 6:T1+=deltaParam;break;
				  }
					break ;
		       case 'I':        break ;
		       case 'O':        break ;
		     }
		   break;
	case 73:                                 //   Pu
		   switch(flagMODE)
		     { case 'P': Xg[2]+=deltaZ*Zdel;Yg[2]+=deltaZ*Zdel;
				 flagNew=4;
					break ;
		       case 'M': Xg[2]-=deltaZ*Zdel;Yg[2]+=deltaZ*Zdel;
				 flagNew=4;
					break ;
		       case 'C':        break ;
		       case 'I':        break ;
		       case 'O':        break ;
		     }
		   break;
	case 81:                                 //   Pd
		   switch(flagMODE)
		     { case 'P': Xg[2]-=deltaZ*Zdel;Yg[2]-=deltaZ*Zdel;
				 flagNew=4;
					break ;
		       case 'M': Xg[2]+=deltaZ*Zdel;Yg[2]-=deltaZ*Zdel;
				 flagNew=4;
					break ;
		       case 'C':        break ;
		       case 'I':        break ;
		       case 'O':        break ;
		     }
		   break;
//	case 71:                                 //   Home
//	case 79:    			         //   End
//	case 82:    				 //   Ins
	case 83:  flagWork=1 ; flagNew=0; break; //   Delete
	case 13:  flagPeresch=1;flagWork=1;      //   Enter
		  flagNew=9;  break;
//	case 32:   ;				 //   SpaseBar
	case 27:  flagWork=1 ; flagNew=0; break; //   Esc
	default:  flagNew=0  ; break;            //   остальные клавиши
      };


 }
 flagWork=0;
 flagParam=0;
return ;
}
//----------------------------------------------------------
