117 lines
3.5 KiB
C++
117 lines
3.5 KiB
C++
/**************************************************************************\
|
|
|* *|
|
|
|* 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;
|
|
}
|
|
|
|
|