Pascal/Turbo Pascal - prueba de la unidad UMOUSE anterior

 
Vista:

prueba de la unidad UMOUSE anterior

Publicado por micropais (209 intervenciones) el 06/08/2005 10:57:56
{////////////////////////////////////////////////////////////////////////////
Micropais 31-7-2005
Prueba de la unidad UMOUSE en modo texto
/////////////////////////////////////////////////////////////////////////////}
uses crt,umouse;
var ejex,ejey:integer; { Calculo de coordenadas en modo texto }
{////////////////////////////////////////////////////////////////////////////}
begin
textmode(co80);
textcolor(1);textbackground(7);
writeln('Prueba de la unidad UMOUSE en modo texto');
textcolor(7);textbackground(0);

mouse_initialization; { inicializamos el raton , conveniente }
gotoxy(1,5);
if (mouse_status=-1) then begin
write(' Mouse OK.');
write(' y Tiene ',number_of_buttons,(' Botones'));
end
else begin
writeln('Mouse KO. ');
writeln('Programa detenido .');
writeln('Pulse una tecla para continuar');
readln;
halt;
end;
show_cursor; { mostramos el cursor del raton }
{ para ocultarlo usaremos Hidden_cursor }
cursor_off; { Apagamos el cursor del BIOS no del mouse, pura estetica}

gotoxy(1,25);
write('Pulsa cualquier tecla para salir');

textcolor(7);textbackground(1);
gotoxy(40,25);
write('Pulsa por aqui con el Raton para SALIR');

textcolor(7);textbackground(0);
repeat
get_mouse_position_and_button_status;
gotoxy (10,10);
case button_status of
0:write('Pulsa Botones en el Mouse');
1:write('Boton Izquierdo ');
2:write('Boton Derecho ');
3:write('Boton Izquierdo y Derecho');
4:write('Boton Centro ');
5:write('Boton Centro e Izquierdo ');
6:write('Boton Centro y Derecho ');
7:write('­­­ BRUTO 3 DE GOLPE !!! ');
end;

ejex:=(horizontal_cursor_position shr 3)+1;
ejey:=(vertical_cursor_position shr 3)+1;
{ calculo de ejeX y de ejeY ,tener en cuenta que la salida se da en pixel
y contando desde 0 ,asi obtenemos unas coordenadas entre 0 y 79 o mejor
aun entre 1 y 80 para este modo de texto , de ahi el +1 ,recordar que
hay pantallas de 8x8 de 8x14 y de 8x16
}
gotoxy(10,11);write( 'ejeX',ejex:3);
gotoxy(10,12);write( 'ejeY',ejey:3);

{ Salir si pulsamos con el raton sobre el Texto Coloreado }
if (ejex in [40..80]) and (ejey=25) and (button_status<>0) then
begin
cursor_on; { Activamos el cursor BIOS ,no mouse}
exit;
end;

until keypressed;
readln;
cursor_on; { Activamos el cursor BIOS , no mouse }
end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:prueba de la unidad UMOUSE anterior

Publicado por M@rceloL (152 intervenciones) el 17/08/2005 23:26:58
...Este... bueno... no sé por qué motivo, pero lo probé en un WinXP sp2 y no anduvo muy bien. Hay problemas con la posición del mouse: cuando uno hace click, parece que no calcula bien la posición...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

XP solo detecta 2 botones

Publicado por Micropais (209 intervenciones) el 20/08/2005 17:58:56
_______________________________________________________

Tienes TODA la Razón, por algun motivo XP solo detecta 2 botones .
_______________________________________________________

El programilla funciona a la perfeccion, mira bien el mensaje de PRUMOUSE
-" MOUSE OK y tiene 2 botones " - Recalco - dice DOS BOTONES
Es un problema de DRIVER.

Lo he probado con un raton óptico USB con rueda y parece que la rueda se la pasa por el Forro de sus ...JONES

- Debe haber alguna otra interrupcion nueva, que desconozco ,para adaptar la ruedecilla. tambien ocurre con el yoystick y puerto serie , el propio USB interfiere en el puerto serie.

Los programillas antiguos ya no CHUSCAN como debieran bajo XP , pero van bien bajo GINDOWS98.

Parece ser que la ultima filosofia de microsoft es "AVANZO y APLASTO y solo puede quedar uno,YO billG"

- Creo que la Guerra abierta al DOS va en serio.

Tendremos que actualizarnos - o usar solo D.O.S botones bajo XP -

SALU-Dos

Micropais.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Otro fallo?

Publicado por micropais (209 intervenciones) el 20/08/2005 18:46:51
Si te refieres al calculo de la fila - columna del raton , el programa funciona a la perfección (en el modo de texto de 80x25).

Antiguamente se utilizaba la pantalla 80x25 con caracter de 8x8 pixel.

el XP por defecto usa modo texto 80x43 u 80x50.
para cambiar esto se puede usar desde el ¿dos XP?.
mode con lines=25
mode con lines=43
mode con lines=50

ó cambiar el modo texto desde pascal con textmode (co80+256);

pero esto solo es valido si no cambiamos la altura de los caracteres de 8x8
ya que como sabras se pueden cambiar mediante el bios a:
8x8: int 10h F-11h S-23h
8x14 int 10h F-11h S-22h
8x16 int 10h F-11h S-24h

Saber el modo de texto en el que estás y el tipo de letra , lo deberá detectar tu programa - la rutina de prueba ,era solo para probar la unidad,el código es lo más simple que pude hacer y eso si, para un modo texto de 80x25 ,si quieres todos los casos de pantalla deberas hacer ligeros cambios en el calculo.
tener en cuenta tambien el calculo para los modos graficos.

ejex:=(horizontal_cursor_position shr 3)+1; {shr 3 (division rapida entre 8)}
ejey:=(vertical_cursor_position / (altura del caracter en pixel 8,14,16) )+1;

SALUDOS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar