First commit 20/03/1997
This commit is contained in:
641
TPV_MSG.CPP
Normal file
641
TPV_MSG.CPP
Normal file
@ -0,0 +1,641 @@
|
||||
#include <time.h>
|
||||
#include <alloc.h>
|
||||
#include <conio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <graphics.h>
|
||||
|
||||
#include "c:\program\src_dos\libs\make_bot\make_bot.h"
|
||||
#include "c:\program\src_dos\libs\bdatos\bdatos.hh"
|
||||
#include "tpv_def.h"
|
||||
#include "tpv_num.h"
|
||||
|
||||
|
||||
BDatos BProtector; // Base de datos para el protector
|
||||
MENSAJES SProtector; // Para guardar los mensajes del protector
|
||||
|
||||
|
||||
|
||||
char BufferM[6][65 + 1];
|
||||
|
||||
/*************************************\
|
||||
| |
|
||||
| Parte Principal del M<>dulo |
|
||||
| |
|
||||
\*************************************/
|
||||
int far RatonMensajes( void );
|
||||
void ConfigurarMensajes( void );
|
||||
void CargaDatosProtector( void );
|
||||
void MuestraAyudaProtector( char columna );
|
||||
void MuestraDatosProtector( int RowStart );
|
||||
void EditItemProtector( char columna, int linea );
|
||||
void NuevoRegistroProtector( MENSAJES *NSProtector );
|
||||
void MuestraMensajes( char columna, int linea, char como );
|
||||
void ObtenCoordenadasProtector( char columna, char linea, int *X0, int *Y0, int *X1, int *Y1 );
|
||||
|
||||
|
||||
p_Ampliada *LetraG[6];
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20> Parte principal del m<>dulo <20>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* ConfigurarMensajes *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Gestiona los mensajes que se mostraran en el protector *|
|
||||
|* *|
|
||||
|* Entradas: (ninguna) *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
void ConfigurarMensajes(void)
|
||||
{
|
||||
char i, buffer[80], key;
|
||||
char CurrProtector, CurrRow, CurrCol, oldCol;
|
||||
int BPush, ok;
|
||||
int X0, Y0, X1, Y1;
|
||||
|
||||
LeeFuentes(Config.Prot_fnt);
|
||||
|
||||
|
||||
for ( i = 0; i < 6; i++ )
|
||||
if ( ( LetraG[i] = ( p_Ampliada * )malloc( sizeof( p_Ampliada ) ) ) == NULL )
|
||||
{
|
||||
for ( i=0; i < 6; i++ )
|
||||
free( LetraG[i] );
|
||||
return;
|
||||
}
|
||||
|
||||
sprintf( buffer, "datos\\%s\\mensajes.dbf", NEmpresa );
|
||||
if ( BProtector.AbrirReg( buffer, sizeof( MENSAJES ) ) == ERROR )
|
||||
Error(0x01, BProtector.cError);
|
||||
|
||||
// Si no hay registros, creamos uno almenos.
|
||||
if ( BProtector.Registros() != 0 )
|
||||
{
|
||||
if ( BProtector.LeeReg( (void *)&SProtector, 0 ) == ERROR )
|
||||
Error(0x01, BProtector.cError);
|
||||
} else {
|
||||
NuevoRegistroProtector( &SProtector );
|
||||
if ( BProtector.InsReg( (void *)&SProtector, 0, ARRIBA ) == ERROR )
|
||||
Error(0x01, BProtector.cError);
|
||||
}
|
||||
|
||||
|
||||
LetraG[0] -> x = 17; LetraG[0] -> y = 32;
|
||||
LetraG[0] -> ndigitos = 20;
|
||||
LetraG[0] -> AX = 2; LetraG[0] -> AY = 2;
|
||||
|
||||
*LetraG[5] = *LetraG[4] = *LetraG[3] = *LetraG[2] = *LetraG[1] = *LetraG[0];
|
||||
|
||||
LetraG[1] -> y = 64;
|
||||
LetraG[2] -> y = 96;
|
||||
LetraG[3] -> y = 128;
|
||||
LetraG[4] -> y = 160;
|
||||
LetraG[5] -> y = 192;
|
||||
|
||||
for ( i = 0; i < 6; i++ )
|
||||
{
|
||||
LetraG[i] -> C1 = SProtector.CBg[i];
|
||||
LetraG[i] -> C2 = SProtector.CFg[i];
|
||||
}
|
||||
|
||||
|
||||
// Rellenamos la pantalla con un fondo atractivo...
|
||||
setfillstyle( Config.FillBgS, Config.FillBgC );
|
||||
bar( 0, 0, 640, 480 );
|
||||
|
||||
Imprime_Estaticos( 50, "systm\\Tpv.img"); // Imprime botones estaticos 'Seccion 1'
|
||||
|
||||
for ( i = 0; i < 6; i++ )
|
||||
sprintf( BufferM[i], "%-20s%-20s%-20s", SProtector.Mensaje1[i], SProtector.Mensaje2[i], SProtector.Mensaje3[i] );
|
||||
|
||||
CurrProtector = 0; CurrRow = 0;
|
||||
|
||||
// Mostramos datos hasta que se nos acabe la pantalla
|
||||
MuestraDatosProtector( CurrProtector*6 + CurrRow );
|
||||
|
||||
CurrCol = 0; ok = 0;
|
||||
oldCol = -1;
|
||||
|
||||
do {
|
||||
if ( CurrCol != oldCol )
|
||||
{
|
||||
oldCol = CurrCol; MuestraAyudaProtector( CurrCol );
|
||||
}
|
||||
|
||||
MuestraMensajes( CurrCol, CurrRow, INTENSO );
|
||||
BPush = Comprueba_Secuencia( 8, RatonMensajes );
|
||||
MuestraMensajes( CurrCol, CurrRow, NORMAL );
|
||||
|
||||
switch ( BPush )
|
||||
{
|
||||
case 0: // No se pulso ningun BOTON
|
||||
while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER
|
||||
break;
|
||||
case -2: // Hay una tecla normal en BUFFER
|
||||
if ( ( key = getch() ) != 27 )
|
||||
{
|
||||
if ( key != 13 )
|
||||
ungetch( key );
|
||||
EditItemProtector( CurrCol, CurrRow );
|
||||
|
||||
for ( i = 0; i < 6; i++ )
|
||||
sprintf( BufferM[i], "%-20s%-20s%-20s", SProtector.Mensaje1[i], SProtector.Mensaje2[i], SProtector.Mensaje3[i] );
|
||||
|
||||
}
|
||||
break;
|
||||
case -1: // Hay una tecla especial en BUFFER
|
||||
switch( getch() )
|
||||
{
|
||||
// Flecha Izquierda
|
||||
case 75:
|
||||
case 15:
|
||||
CurrCol--; if ( CurrCol < 0 ) CurrCol = 2;
|
||||
break;
|
||||
// Flecha Derecha
|
||||
case 77:
|
||||
case 9:
|
||||
CurrCol ++; if ( CurrCol > 2 ) CurrCol = 0;
|
||||
break;
|
||||
// Flecha Arriba
|
||||
case 72:
|
||||
CurrRow --; if ( CurrRow < 0 ) CurrRow = 5;
|
||||
break;
|
||||
// Flecha Abajo
|
||||
case 80:
|
||||
CurrRow ++; if ( CurrRow > 5 ) CurrRow = 0;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
// Cambiar Fuente
|
||||
case 1:
|
||||
break;
|
||||
// Menu Principal
|
||||
case 2:
|
||||
ok = 1;
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
ObtenCoordenadasProtector( BPush, CurrRow, &X0, &Y0, &X1, &Y1 );
|
||||
if ( SProtector.Desplaz[ BPush - 3 ] )
|
||||
{
|
||||
SProtector.Desplaz[ BPush - 3 ] = 0;
|
||||
ponicono( X0+5, Y0+5, led_off, 1 );
|
||||
} else {
|
||||
SProtector.Desplaz[ BPush - 3 ] = 1;
|
||||
ponicono( X0+5, Y0+5, led_on, 1 );
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
CurrProtector--; if ( CurrProtector < 0 ) CurrProtector = 0;
|
||||
break;
|
||||
case 10:
|
||||
CurrProtector++; if ( CurrProtector > 5 ) CurrProtector = 5;
|
||||
break;
|
||||
case 11:
|
||||
LetraG[CurrRow] -> C2 =SProtector.CFg[CurrRow] = (SProtector.CFg[CurrRow] + 1) % 256;
|
||||
break;
|
||||
case 12:
|
||||
LetraG[CurrRow] -> C1 =SProtector.CBg[CurrRow] = (SProtector.CBg[CurrRow] + 1 ) % 256;
|
||||
break;
|
||||
case 13:
|
||||
LetraG[CurrRow] -> C2 =SProtector.CFg[CurrRow] = (SProtector.CFg[CurrRow] - 1 ) % 256;
|
||||
break;
|
||||
case 14:
|
||||
LetraG[CurrRow] -> C1 =SProtector.CBg[CurrRow] = (SProtector.CBg[CurrRow] - 1 ) % 256;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
} while( !ok );
|
||||
|
||||
|
||||
if ( BProtector.EscribeReg( (void *)&SProtector, 0 ) == ERROR )
|
||||
Error(0x01, BProtector.cError);
|
||||
BProtector.CerrarReg();
|
||||
|
||||
|
||||
for ( i=0; i < 6; i++ )
|
||||
free( LetraG[i] );
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* MuestraDatosSProtector *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Dado un registro, se muestran sucesivamente este y todos *|
|
||||
|* los que hay por debajo de <20>l, hasta que se agote la base *|
|
||||
|* o no quepan mas en la pantalla. *|
|
||||
|* *|
|
||||
|* Entradas: Registro por el que comenzar *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
void MuestraDatosProtector( int RowStart )
|
||||
{
|
||||
int linea, campo;
|
||||
int X0, Y0, X1, Y1;
|
||||
|
||||
// Imprimo la NLINEAS_EMPL que caben en la pantalla
|
||||
|
||||
for ( linea=0; linea < 6; linea++ )
|
||||
{
|
||||
// Por cada linea hay 3 campos, ehhh!!!
|
||||
for ( campo=0; campo < 3; campo++ )
|
||||
MuestraMensajes( campo, linea, NORMAL );
|
||||
}
|
||||
|
||||
// Ahora limpio los restantes huecos si los hay
|
||||
setfillstyle( SOLID_FILL, Config.TxtBgN );
|
||||
for ( ; linea < 6; linea++ )
|
||||
for ( campo=0; campo < 3; campo++ )
|
||||
{
|
||||
ObtenCoordenadasProtector( campo, linea, &X0, &Y0, &X1, &Y1 );
|
||||
bar( X0, Y0, X1, Y1 );
|
||||
}
|
||||
|
||||
for ( campo=3; campo < 9; campo++ )
|
||||
{
|
||||
ObtenCoordenadasProtector( campo, 1, &X0, &Y0, &X1, &Y1 );
|
||||
if ( SProtector.Desplaz[ campo - 3 ] )
|
||||
{
|
||||
ponicono( X0+5, Y0+5, led_on, 1 );
|
||||
} else {
|
||||
ponicono( X0+5, Y0+5, led_off, 1 );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* MuestraMensajes *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Reescribe el campo dado, seg<65>n la fila, y la intensidad *|
|
||||
|* *|
|
||||
|* Entradas: *|
|
||||
|* columna campo ha mostar *|
|
||||
|* linea linea en la que nos encontramos *|
|
||||
|* como intensidad del texto (NORMAL/INTENSO) *|
|
||||
|* *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
void MuestraMensajes( char columna, int linea, char como )
|
||||
{
|
||||
char buffer[80];
|
||||
|
||||
int X0, Y0, X1, Y1;
|
||||
|
||||
ObtenCoordenadasProtector( columna, linea, &X0, &Y0, &X1, &Y1 );
|
||||
|
||||
switch( columna )
|
||||
{
|
||||
case 0:
|
||||
sprintf ( buffer, "%s", SProtector.Mensaje1[linea] );
|
||||
break;
|
||||
case 1:
|
||||
sprintf ( buffer, "%s", SProtector.Mensaje2[linea] );
|
||||
break;
|
||||
case 2:
|
||||
sprintf ( buffer, "%s", SProtector.Mensaje3[linea] );
|
||||
break;
|
||||
}
|
||||
|
||||
setfillstyle( SOLID_FILL, ( como == NORMAL ) ? Config.TxtBgN : Config.TxtBgI );
|
||||
bar( X0, Y0, X1, Y1 );
|
||||
setcolor ( ( como == NORMAL ) ? Config.TxtFgN : Config.TxtFgI );
|
||||
outtextxy( X0+2, Y0, buffer );
|
||||
|
||||
}
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* MuestraAyudaSProtector *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Muestra una peque<75>a descripcion del contenido para el campo *|
|
||||
|* *|
|
||||
|* Entradas: *|
|
||||
|* columna campo ha mostar su ayuda *|
|
||||
|* *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
void MuestraAyudaProtector( char columna )
|
||||
{
|
||||
char buffer1[80];
|
||||
|
||||
buffer1[0] = '\0';
|
||||
|
||||
switch( columna )
|
||||
{
|
||||
case 0:
|
||||
sprintf ( buffer1, "Introduzca mensaje del 1er Bloque" );
|
||||
break;
|
||||
case 1:
|
||||
sprintf ( buffer1, "Introduzca mensaje del 2er Bloque" );
|
||||
break;
|
||||
case 2:
|
||||
sprintf ( buffer1, "Introduzca mensaje del 3er Bloque" );
|
||||
break;
|
||||
}
|
||||
|
||||
// Ayuda reducida
|
||||
setfillstyle( SOLID_FILL, EGA_BLACK ); bar( 7, 457, 498, 473 );
|
||||
// Imprime la ayudita
|
||||
setcolor( EGA_WHITE ); outtextxy( 7, 457, buffer1 );
|
||||
|
||||
}
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* EditItemSProtector *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Se encarga de editar y validar el campo. *|
|
||||
|* *|
|
||||
|* Entradas: *|
|
||||
|* columna campo ha editar *|
|
||||
|* linea linea en la que nos encontramos *|
|
||||
|* *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
void EditItemProtector( char columna, int linea )
|
||||
{
|
||||
char buffer[80];
|
||||
|
||||
int X0, Y0, X1, Y1;
|
||||
|
||||
ObtenCoordenadasProtector( columna, linea, &X0, &Y0, &X1, &Y1 );
|
||||
|
||||
switch( columna )
|
||||
{
|
||||
case 0:
|
||||
sprintf ( buffer, "%s", SProtector.Mensaje1[linea] );
|
||||
if ( !( InputCadenaG( buffer, 0, 20, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||||
strcpy( SProtector.Mensaje1[linea], buffer );
|
||||
break;
|
||||
case 1:
|
||||
sprintf ( buffer, "%s", SProtector.Mensaje2[linea] );
|
||||
if ( !( InputCadenaG( buffer, 0, 20, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||||
strcpy( SProtector.Mensaje2[linea], buffer );
|
||||
break;
|
||||
case 2:
|
||||
sprintf ( buffer, "%s", SProtector.Mensaje3[linea] );
|
||||
if ( !( InputCadenaG( buffer, 0, 20, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||||
strcpy( SProtector.Mensaje3[linea], buffer );
|
||||
break;
|
||||
}
|
||||
while( kbhit() ) getch();
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* ObtenCoordenadasProtector *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Obtiene las coordenadas de acotacion para el campo pedido *|
|
||||
|* *|
|
||||
|* Entradas: *|
|
||||
|* columna campo del que obtener las coordenadas *|
|
||||
|* linea linea en la que nos encontramos *|
|
||||
|* X0 Y0 X1 Y1 Punteros para devolver las coordenadas *|
|
||||
|* *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
void ObtenCoordenadasProtector( char columna, char linea, int *X0, int *Y0, int *X1, int *Y1 )
|
||||
{
|
||||
|
||||
// Calculamos la Y0, Y1 para la linea dada ( SOLO columna < 3 )
|
||||
*Y0 = 280 + 19*linea;
|
||||
*Y1 = *Y0 + 17;
|
||||
|
||||
switch( columna )
|
||||
{
|
||||
case 0:
|
||||
*X0 = 7; *X1 = 209;
|
||||
break;
|
||||
case 1:
|
||||
*X0 = 219; *X1 = 421;
|
||||
break;
|
||||
case 2:
|
||||
*X0 = 431; *X1 = 633;
|
||||
break;
|
||||
|
||||
|
||||
case 3:
|
||||
*X0 = 350; *X1 = 380;
|
||||
*Y0 = 27; *Y1 = 57;
|
||||
break;
|
||||
case 4:
|
||||
*X0 = 350; *X1 = 380;
|
||||
*Y0 = 61; *Y1 = 91;
|
||||
break;
|
||||
case 5:
|
||||
*X0 = 350; *X1 = 380;
|
||||
*Y0 = 95; *Y1 = 125;
|
||||
break;
|
||||
case 6:
|
||||
*X0 = 350; *X1 = 380;
|
||||
*Y0 = 129; *Y1 = 159;
|
||||
break;
|
||||
case 7:
|
||||
*X0 = 350; *X1 = 380;
|
||||
*Y0 = 163; *Y1 = 193;
|
||||
break;
|
||||
case 8:
|
||||
*X0 = 350; *X1 = 380;
|
||||
*Y0 = 197; *Y1 = 227;
|
||||
break;
|
||||
}
|
||||
|
||||
*X0 += 2;
|
||||
*X1 -= 2;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* CargaDatosProtextor *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Carga los datos del Protector *|
|
||||
|* *|
|
||||
|* Entradas:(ninguna) *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
void CargaDatosProtector( void )
|
||||
{
|
||||
char buffer[80];
|
||||
|
||||
sprintf( buffer, "datos\\%s\\mensajes.dbf", NEmpresa );
|
||||
if ( BProtector.AbrirReg( buffer, sizeof( MENSAJES ) ) == ERROR )
|
||||
Error(0x01, BProtector.cError);
|
||||
|
||||
// Si no hay registros, creamos uno almenos.
|
||||
if ( BProtector.Registros() != 0 )
|
||||
{
|
||||
if ( BProtector.LeeReg( (void *)&SProtector, 0 ) == ERROR )
|
||||
Error(0x01, BProtector.cError);
|
||||
} else {
|
||||
NuevoRegistroProtector( &SProtector );
|
||||
if ( BProtector.InsReg( (void *)&SProtector, 0, ARRIBA ) == ERROR )
|
||||
Error(0x01, BProtector.cError);
|
||||
}
|
||||
|
||||
BProtector.CerrarReg();
|
||||
|
||||
}
|
||||
|
||||
void NuevoRegistroProtector( MENSAJES *NSProtector )
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
NSProtector ->TEspera = 15; // Segundos de espera para pasar al siguiente bloque
|
||||
|
||||
for ( i = 0; i < 6; i++ )
|
||||
{
|
||||
NSProtector ->Desplaz[i] = 0; // Indicador si se desplaza o no.
|
||||
|
||||
NSProtector ->Mensaje1[i][0] = '\0';// Mensaje que se va a mostrar
|
||||
NSProtector ->Mensaje2[i][0] = '\0';// Mensaje que se va a mostrar
|
||||
NSProtector ->Mensaje3[i][0] = '\0';// Mensaje que se va a mostrar
|
||||
|
||||
NSProtector ->CFg[i] = 63;
|
||||
NSProtector ->CBg[i] = 0;
|
||||
}
|
||||
|
||||
NSProtector ->Desplaz[3] = 1; // Indicador si se desplaza o no.
|
||||
strcpy( NSProtector ->Mensaje1[3], "Programa realizado p" );
|
||||
strcpy( NSProtector ->Mensaje2[3], "or: Jose David Guil" );// Mensaje que se va a mostrar
|
||||
strcpy( NSProtector ->Mensaje3[3], "len" );// Mensaje que se va a mostrar
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* PreviewPantalla *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Muestra un preview de como quedar<61> el mensaje del protector *|
|
||||
|* *|
|
||||
|* Entradas:(ninguna) *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
void PreviewPantalla(void)
|
||||
{
|
||||
static int Pasadas = 20*8 - 1;
|
||||
static time_t first;
|
||||
static char Paso = 0;
|
||||
char i;
|
||||
|
||||
if ( Pasadas == -1 && difftime( time(NULL), first ) >= SProtector.TEspera )
|
||||
{
|
||||
Pasadas = 0;
|
||||
if ( Paso == 4 ) Paso = 1;
|
||||
}
|
||||
|
||||
if ( Pasadas >= 0 )
|
||||
{
|
||||
Pasadas ++;
|
||||
if ( Pasadas > (Paso != 3 ? 20*8 : 25*8 ) )
|
||||
{
|
||||
time( &first );
|
||||
Pasadas = -1;
|
||||
Paso++;
|
||||
}
|
||||
}
|
||||
|
||||
for ( i = 0; i < 6; i++ )
|
||||
{
|
||||
if ( SProtector.Desplaz[i] || Pasadas != -1 )
|
||||
Fuente_Amplia3( BufferM[i], LetraG[i] );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* RatonMensajes *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Funci<63>n soporte para el control del raton, que ademas se *|
|
||||
|* encarga de mostrar el letrero digital y el protector de *|
|
||||
|* pantalla. *|
|
||||
|* *|
|
||||
|* Entradas: *|
|
||||
|* Linea en la que se inserta y posici<63>n f<>sica, y columna *|
|
||||
|* *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
int far RatonMensajes(void)
|
||||
{
|
||||
|
||||
// inicializa_raton_grafico(0, 0, 624, 464);
|
||||
// char boton_izq, boton_der;
|
||||
char Que;
|
||||
|
||||
activa_raton();
|
||||
|
||||
union REGS io;
|
||||
io.x.ax = 3;
|
||||
|
||||
|
||||
|
||||
do{
|
||||
PreviewPantalla();
|
||||
|
||||
int86(0x33, &io, &io); // lee posici<63>n y estados del bot<6F>n
|
||||
|
||||
x_raton = io.x.cx;
|
||||
y_raton = io.x.dx;
|
||||
|
||||
}while( (io.x.bx & 1) == 0 && ((io.x.bx >> 1) & 1) == 0 && !kbhit() );
|
||||
|
||||
|
||||
/////////////////////////////////////////
|
||||
// RETURN Derecho Izquierdo //
|
||||
// //
|
||||
// 0 0 0 //
|
||||
// 1 1 0 //
|
||||
// 2 0 1 //
|
||||
// 3 1 1 //
|
||||
// //
|
||||
/////////////////////////////////////////
|
||||
|
||||
|
||||
if ( ((io.x.bx >> 1) & 1)==0 && (io.x.bx & 1)==0 ) Que = 0;
|
||||
if ( ((io.x.bx >> 1) & 1)==1 && (io.x.bx & 1)==0 ) Que = 1;
|
||||
if ( ((io.x.bx >> 1) & 1)==0 && (io.x.bx & 1)==1 ) Que = 2;
|
||||
if ( ((io.x.bx >> 1) & 1)==1 && (io.x.bx & 1)==1 ) Que = 3;
|
||||
|
||||
desactiva_raton();
|
||||
return Que;
|
||||
}
|
Reference in New Issue
Block a user