/**************************************************************************\ |* *| |* Menus *| |* *| |* Descripci¢n: *| |* M¢dulo encargado de generar menus, una vez se le pasa *| |* el puntero a la estructura definida. *| |* *| |* Fecha: 21-07-96 14.34 / 18.00 *| \**************************************************************************/ #define CONTRAIDO 0 #define DESPLEGADO 1 typedef struct menu { char NombreTopico[80]; char TExplicacion[80]; char NSubTopicos; char SubTopicos[40][15]; char Explicacion[80][15]; } GENERAR_MENU; // Archivo Gestion de: Hermanos Hermanas Listados // | | | | // |Configurar |Altas |Altas |Votantes // |Mantenimiento |Bajas |Bajas |Papeletas // | |Consultas |Consultas |Hermanos // |Salir | | | // 1§ byte TOPICO 2§ byte SUBTOPICO int GeneraMenu( GENERAR_MENU *mi_menu, char Topicos ) { int Topico=0, SubTopico=0; char DespCont = CONTRAIDO; char Ok = 0; ImprimeMenuContraido( mi_menu ); do { while( !kbhit() ); switch ( getch() ) { // Selecciona algo case 27: if ( DespCont == CONTRAIDO ) ImprimeMenuDesplegado( mi_menu[Topico] ); else return ( ( (Topico+1) <<8)+(SubTopico+1) ); break; // Escape case 13: if ( DespCont != CONTRAIDO ) ContraeMenuDesplegado(); break; case 0: switch( getch() ) { // Derecha case if ( DespCont == CONTRAIDO ) { Topico = (Topico++)%Topicos; SeleccionaMenu( Topico ); } else { ContraeMenuDesplegado(); Topico = (Topico++)%Topicos; ImprimeMenuDesplegado( mi_menu[Topico] ); } break; // Izquierda case if ( DespCont == CONTRAIDO ) { Topico --; if ( Topico < 0 ) Topico = Topicos-1 SeleccionaMenu( mi_menu, Topico ); } else { ContraeMenuDesplegado(); Topico --; if ( Topico < 0 ) Topico = Topicos-1 ImprimeMenuDesplegado( mi_menu[Topico] ); } break; // Arriba case if ( DespCont != CONTRAIDO ) { SubTopico--; if ( SubTopico < 0 ) SubTopico = NSubTopicos - 1; SeleccionaSubTopico( mi_menu, SubTopico ); } break; // Abajo case if ( DespCont == CONTRAIDO ) ImprimeMenuDesplegado( mi_menu[Topico] ); else { SubTopico = ( SubTopico ++ ) % NSubTopicos; SeleccionaSubTopico( mi_menu, SubTopico ); } break; } } }while( 1 ); return 0; }