CD_OUT_SRC/CD_CFG.CPP
2021-09-03 17:50:32 +02:00

313 lines
8.6 KiB
C++
Raw Blame History

#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;
}