313 lines
8.6 KiB
C++
313 lines
8.6 KiB
C++
#include <dos.h>
|
||
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
#include <conio.h> // Para getch();
|
||
#include <graphics.h> // Para outtextxy(...); y cleardevice(...);
|
||
#include "..\libs\make_bot\make_bot.h" // Fuciones de MAKE_BOTON
|
||
#include "cd_icons.h"
|
||
#include "CD_SND.H"
|
||
|
||
#define SIN_COMENTARIO 0
|
||
#define CON_COMENTARIO 1
|
||
|
||
#define DOS 1
|
||
#define WINDOWS 2
|
||
|
||
extern int /*far _cdecl*/ Fichero_cd_img(char Dinamicos_Estaticos);
|
||
|
||
struct CFG_str {
|
||
char Nombre_del_Programa[70];
|
||
char Comentario_Inicial[70];
|
||
char VerHi, VerLow;
|
||
char Register;
|
||
|
||
long Records;
|
||
};
|
||
|
||
struct CFG_str CD_cabecera1;
|
||
|
||
typedef struct {
|
||
|
||
unsigned int Exit_after_EXE : 1;
|
||
unsigned int With_Out_Sound : 1;
|
||
unsigned int Auto_Install : 1;
|
||
unsigned int Check_Free_Size : 1;
|
||
unsigned int Format_Always : 1;
|
||
unsigned int Without_Backgr : 1;
|
||
unsigned int Futura_Ampliac : 4;
|
||
|
||
} Cd_CFG;
|
||
|
||
Cd_CFG CD_CFG1;
|
||
FILE *CD_CFG;
|
||
int CFG;
|
||
|
||
void Init_CFG(void);
|
||
void Abre_Ficha_CD_CFG(int R_W);
|
||
void Poner_a_cero_estructura_actual_CFG(void);
|
||
|
||
#define SIN_COMENTARIO 0
|
||
#define CON_COMENTARIO 1
|
||
extern void Imprime_Lista(char Como);
|
||
extern void Sonido(char Sonido);
|
||
|
||
|
||
|
||
void Init_CFG(void){
|
||
int ok = 0;
|
||
int Salvar = 0;
|
||
|
||
Abre_Ficha_CD_CFG(0);
|
||
|
||
setfillstyle(SOLID_FILL, 240);
|
||
bar(395, 140, 625, 410);
|
||
|
||
// Imprime_Estaticos( 4, "cd_out.img"); // Imprime botones estaticos 'Seccion 4'
|
||
Fichero_cd_img(4);
|
||
Imprime_Secuencia(2); // Imprime secuencia 1.
|
||
// Imprime_Estaticos( 5, "cd_out.img"); // Imprime textos estaticos 'Seccion 5'
|
||
Fichero_cd_img(5);
|
||
|
||
if ( CD_CFG1 . Exit_after_EXE ) Imprime_Bordes(2, 4, 248);
|
||
if ( CD_CFG1 . With_Out_Sound ) Imprime_Bordes(2, 5, 248);
|
||
if ( CD_CFG1 . Auto_Install ) Imprime_Bordes(2, 6, 248);
|
||
if ( CD_CFG1 . Check_Free_Size ) Imprime_Bordes(2, 7, 248);
|
||
if ( CD_CFG1 . Format_Always ) Imprime_Bordes(2, 8, 248);
|
||
if ( CD_CFG1 . Without_Backgr ) Imprime_Bordes(2, 9, 248);
|
||
|
||
while(!ok){ // Bucle infinito
|
||
|
||
switch( Comprueba_Secuencia( 2 ) ) { // Iniciamos comprobacion de 2<> sec
|
||
|
||
case 0: // No se pulso ningun BOTON
|
||
// Pero el raton fue presionado en
|
||
// algun sitio...
|
||
// Sonido("CD_OUT01.WAV");
|
||
Sonido( Mouse_Press );
|
||
break;
|
||
case -2: // Hay una tecla normal en BUFFER
|
||
getch(); // La eliminamos
|
||
// Sonido("CD_OUT01.WAV");
|
||
Sonido( Mouse_Press );
|
||
break;
|
||
case -1: // Hay una tecla especial en BUFFER
|
||
getch(); // La eliminamos
|
||
// Sonido("CD_OUT01.WAV");
|
||
Sonido( Mouse_Press );
|
||
break;
|
||
// Boton Cancelar
|
||
case 1:
|
||
// Sonido("CD_OUT0F.WAV");
|
||
Sonido( Cancel );
|
||
Salvar = 0;
|
||
ok = 1;
|
||
break;
|
||
// Boton Salvar
|
||
case 2:
|
||
// Sonido("CD_OUT10.WAV");
|
||
Sonido( Save_until_exit );
|
||
Salvar = 1;
|
||
break;
|
||
// Boton Anterior
|
||
case 3:
|
||
// Sonido("CD_OUT0E.WAV");
|
||
Sonido( Ok );
|
||
ok = 1;
|
||
break;
|
||
// Boton Salir despues de ejecutar
|
||
case 4:
|
||
if ( CD_CFG1 . Exit_after_EXE ) {
|
||
Imprime_Bordes(2, 4, -1);
|
||
CD_CFG1 . Exit_after_EXE = 0;
|
||
// Sonido("CD_OUT0C.WAV");
|
||
Sonido( No );
|
||
} else {
|
||
CD_CFG1 . Exit_after_EXE = 1;
|
||
Imprime_Bordes(2, 4, 248);
|
||
// Sonido("CD_OUT0B.WAV");
|
||
Sonido( Yes );
|
||
}
|
||
break;
|
||
// Boton Desactivar sonidos
|
||
case 5:
|
||
if ( CD_CFG1 . With_Out_Sound ) {
|
||
Imprime_Bordes(2, 5, -1);
|
||
CD_CFG1 . With_Out_Sound = 0;
|
||
// Sonido("CD_OUT0C.WAV");
|
||
Sonido( No );
|
||
} else {
|
||
CD_CFG1 . With_Out_Sound = 1;
|
||
Imprime_Bordes(2, 5, 248);
|
||
// Sonido("CD_OUT0B.WAV");
|
||
Sonido( Yes );
|
||
}
|
||
break;
|
||
// Boton Auto_Instalaci<63>n
|
||
case 6:
|
||
if ( CD_CFG1 . Auto_Install ) {
|
||
Imprime_Bordes(2, 6, -1);
|
||
CD_CFG1 . Auto_Install = 0;
|
||
// Sonido("CD_OUT0C.WAV");
|
||
Sonido( No );
|
||
} else {
|
||
CD_CFG1 . Auto_Install = 1;
|
||
Imprime_Bordes(2, 6, 248);
|
||
// Sonido("CD_OUT0B.WAV");
|
||
Sonido( Yes );
|
||
}
|
||
break;
|
||
// Boton Comprobar espacio libre
|
||
case 7:
|
||
if ( CD_CFG1 . Check_Free_Size ) {
|
||
Imprime_Bordes(2, 7, -1);
|
||
CD_CFG1 . Check_Free_Size = 0;
|
||
// Sonido("CD_OUT0C.WAV");
|
||
Sonido( No );
|
||
} else {
|
||
CD_CFG1 . Check_Free_Size = 1;
|
||
Imprime_Bordes(2, 7, 248);
|
||
// Sonido("CD_OUT0B.WAV");
|
||
Sonido( Yes );
|
||
}
|
||
break;
|
||
// Boton Formatear en caso de unidades A: y B:
|
||
case 8:
|
||
if ( CD_CFG1 . Format_Always ) {
|
||
Imprime_Bordes(2, 8, -1);
|
||
CD_CFG1 . Format_Always = 0;
|
||
// Sonido("CD_OUT0C.WAV");
|
||
Sonido( No );
|
||
} else {
|
||
CD_CFG1 . Format_Always = 1;
|
||
Imprime_Bordes(2, 8, 248);
|
||
// Sonido("CD_OUT0B.WAV");
|
||
Sonido( Yes );
|
||
}
|
||
break;
|
||
// Boton sin dibujo de Fondo
|
||
case 9:
|
||
if ( CD_CFG1 . Without_Backgr ) {
|
||
Imprime_Bordes(2, 9, -1);
|
||
CD_CFG1 . Without_Backgr = 0;
|
||
// Sonido("CD_OUT0C.WAV");
|
||
Sonido( No );
|
||
} else {
|
||
CD_CFG1 . Without_Backgr = 1;
|
||
Imprime_Bordes(2, 9, 248);
|
||
// Sonido("CD_OUT0B.WAV");
|
||
Sonido( Yes );
|
||
}
|
||
break;
|
||
// Boton Imprime Lista Sin Comentarios
|
||
case 10:
|
||
// Sonido("CD_OUT0D.WAV");
|
||
Sonido( Printing );
|
||
Imprime_Lista(SIN_COMENTARIO);
|
||
break;
|
||
// // Boton Imprime Lista Con Comentarios
|
||
// case 10:
|
||
// Imprime_Lista(CON_COMENTARIOS);
|
||
// break;
|
||
default:
|
||
while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER
|
||
// Sonido("CD_OUT11.WAV");
|
||
Sonido( Unknow_error );
|
||
break;
|
||
}
|
||
|
||
}
|
||
|
||
setfillstyle(SOLID_FILL, 240);
|
||
bar(395, 140, 625, 410);
|
||
|
||
if ( Salvar == 1 && CFG != 0 ) Abre_Ficha_CD_CFG(1); else Abre_Ficha_CD_CFG(0);
|
||
|
||
return;
|
||
}
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//<2F> <20>
|
||
//<2F> <20><> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20><><EFBFBD> <20><> <20><><EFBFBD> <20>
|
||
//<2F> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20>
|
||
//<2F> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD> <20> <20> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20>
|
||
//<2F> <20> <20> <20> <20><><EFBFBD> <20> <20> <20> <20><><EFBFBD><EFBFBD> <20> <20> <20> <20> <20><><EFBFBD><EFBFBD> <20>
|
||
//<2F> <20>
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
void Abre_Ficha_CD_CFG(int R_W){
|
||
|
||
char ArchivoDatos[]="C:\\CD_out.CFG";
|
||
char Memoria;
|
||
CFG = 1;
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>//
|
||
//<2F> CD_in Apertura de Indice, y Datos, o creaci<63>n... <20>//
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>//
|
||
|
||
int LSJ = sizeof(struct CFG_str);
|
||
int LSC = sizeof(Cd_CFG);
|
||
|
||
if ( (CD_CFG = fopen( ArchivoDatos, "r+b"))==NULL) {
|
||
|
||
FILE *fa;
|
||
|
||
if ( (fa = fopen( ArchivoDatos, "wb" ) )!=NULL ) {
|
||
|
||
Poner_a_cero_estructura_actual_CFG();
|
||
CD_cabecera1.Records = 0;
|
||
rewind(fa);
|
||
|
||
fwrite(&CD_cabecera1, LSJ, 1, fa); fseek(fa, (long)LSJ, SEEK_SET);
|
||
fwrite(&CD_CFG1, LSC, 1, fa);
|
||
|
||
if (fclose(fa) == EOF ) CFG = 0;
|
||
}
|
||
|
||
if ( (CD_CFG = fopen( ArchivoDatos, "r+b"))==NULL) CFG = 0;
|
||
}
|
||
|
||
if ( CFG != 0 ) {
|
||
rewind(CD_CFG);
|
||
if ( fread(&CD_cabecera1, LSJ, 1, CD_CFG) != 1 ) CFG = 0;
|
||
}
|
||
|
||
if( R_W == 0 ) {
|
||
if ( CFG != 0 ) {
|
||
fseek(CD_CFG, (long)LSJ, SEEK_SET);
|
||
if ( fread(&CD_CFG1, LSC, 1, CD_CFG) != 1 ) CFG = 0;
|
||
}
|
||
} else {
|
||
if ( CFG != 0 ) {
|
||
fseek(CD_CFG, (long)LSJ, SEEK_SET);
|
||
if ( fwrite(&CD_CFG1, LSC, 1, CD_CFG) != 1 ) CFG = 0;
|
||
}
|
||
}
|
||
|
||
if (fclose(CD_CFG) == EOF ) CFG = 0;
|
||
|
||
}
|
||
|
||
void Poner_a_cero_estructura_actual_CFG(void){
|
||
|
||
char CR = 13, LF = 10, BEEP = 7, ANY = 26;
|
||
sprintf( CD_cabecera1.Nombre_del_Programa, "%c %c %c - CD_OUT - %c %c Fichero de Configuraci<63>n %c %c", CR, LF, BEEP, CR, LF, CR, LF );
|
||
sprintf( CD_cabecera1.Comentario_Inicial, "Jos<EFBFBD> David Guill<6C>n %c %c %c %c", CR, LF, BEEP, ANY );
|
||
CD_cabecera1.VerHi = 1; CD_cabecera1.VerLow = 0;
|
||
CD_cabecera1.Register = 1;
|
||
|
||
CD_CFG1 . Exit_after_EXE = 1;
|
||
CD_CFG1 . With_Out_Sound = 0;
|
||
CD_CFG1 . Auto_Install = 1;
|
||
CD_CFG1 . Check_Free_Size = 1;
|
||
CD_CFG1 . Format_Always = 0;
|
||
CD_CFG1 . Without_Backgr = 0;
|
||
CD_CFG1 . Futura_Ampliac = 0;
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|