usar el mouse en pascal
Publicado por micropais (209 intervenciones) el 06/08/2005 10:56:28
{
Micropais 31-7-2005
UNIDAD MOUSE - libreria bastante sencilla para utilizar el raton en nuestros
programillas funciona tanto en modo texto como en algunos modos graficos, no
estan todas las funciones del raton , pero si las mas basicas.
}
UNIT UMOUSE;
{°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°}
INTERFACE {.......... * simbolos publicos *..........................}
{°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°}
{ * variables globales usado por las funciones y procedimientos del raton }
var
horizontal_cursor_position,vertical_cursor_position:integer;
button_status:integer;
button:integer;
number_of_button_presses:integer;
mouse_status,number_of_buttons:integer;
horizontal_cursor_position_at_last_press:integer;
vertical_cursor_position_at_last_press:integer;
minimo_x,minimo_y,maximo_x,maximo_y:word;{ mouse_window }
x1,x2,y1,y2:word;{ mouse_window }
{............................................................................}
procedure mouse_initialization;
procedure show_cursor;
procedure hidden_cursor;
procedure get_mouse_position_and_button_status;
procedure set_mouse_cursor_position(new_horizontal_cursor_position,new_vertical_cursor_position:integer);
procedure get_button_press_information(button:integer);
procedure mouse_window(x1,y1,x2,y2:integer); {F7yF8}
procedure cursor_off;
procedure cursor_on;
{°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°}
IMPLEMENTATION {.......... * simbolos privados *......................... }
{°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°}
uses windos;
var regs:TRegisters;
procedure mouse_initialization;
{ este procedimiento chequea si el est instalado el hadrware y software
del raton si esta todo correcto devuelve en las variables Globales
mouse_status=-1 si no =0
number_of_buttons=numero de botones que dispone el raton
}
{ input ................ AX= 0
output................ AX= mouse status
BX= number of buttons}
begin
regs.AX:=0;
intr($33,regs);
mouse_status:=regs.AX;
number_of_buttons:=regs.BX;
end;
procedure show_cursor;
{ Este procedimiento activa el cursor del raton en la pantalla
input ................ AX= 1
output ............... none }
begin
regs.AX:= 1;
intr($33,regs);
end;
procedure hidden_cursor; {2}
{ Este procedimiento Oculta el cursor del raton de la pantalla
input ................ AX= 2
output ............... none }
begin
regs.AX:= 2;
intr($33,regs);
end;
procedure get_mouse_position_and_button_status; {3}
{ este procedimiento Devuelve en las variables globales
button_status = el boton o botones que se han pulsado
horizontal_cursor_position = la coordenada x del mouse
vertical_cursor_position = la coordenada y del mouse
}
{ this function report current mouse position & button status.
button down a bit is 1
button up a bit is 0 button 1 2 3
input ............... AX= 3 ± ± ±
output .............. BX= button status 1 4 2
.............. CX= horizontal cursor position
.............. DX= vertical cursor position
nota: si se pulsan varios botones a la vez el resultado
es la suma de ambos botones.
por ejemplo si se pulsa el boton 1+2 = 5
1+3 = 3
2+3 = 6
1+2+3= 7 }
begin
regs.AX:=3;
intr($33,regs);
button_status:=regs.BX;
horizontal_cursor_position:=regs.CX {div 8};
vertical_cursor_position:=regs.DX {div 8};
end;
procedure set_mouse_cursor_position(new_horizontal_cursor_position,new_vertical_cursor_position:integer);
{
this function sets cursor to a specified position on the screen.
input ............... AX = 4
............... CX = new horizontal cursor position
............... DX = new vertical cursor position
output............... none }
begin
regs.AX:= 4;
regs.CX:= new_horizontal_cursor_position ;
regs.DX:= new_vertical_cursor_position ;
intr($33,regs);
end;
procedure get_button_press_information (button:integer);
{
this function reports
1. curent button status.
2.a count of button press since the last call to function 5
3.horizontal and vertical position of the cursor,the button
was pressed last time.
input ............... AX = 5
............... BX = button ; BX =0 check left button
; BX =1 check right button
; BX =2 check middle button
output ........... AX=button status ; bit 0 left button
; bit 1 right button
; bit 2 middle button
BX= number of button presses
CX= horizontal cursor position at last press
DX= vertical cursor position at last press }
begin
regs.AX:=5;
regs.BX:=button;
intr($33,regs);
button_status:=regs.AX;
number_of_button_presses:=regs.BX;
horizontal_cursor_position_at_last_press:=regs.CX div 8;
vertical_cursor_position_at_last_press:=regs.DX div 8;
end;
procedure mouse_window(x1,y1,x2,y2:integer);
{ * establece las coordenadas minimas y maximas del mouse utiliza el mismo
sistema de coordenadas de abrir ventanas de window }
begin
minimo_x:=x1;
maximo_x:=x2;
minimo_y:=y1;
maximo_y:=y2;
regs.ax:=7; {n§ de la funcion }
regs.cx:=minimo_x shl 3 ;{nuevo minimo_x }
regs.dx:=maximo_x shl 3;{nuevo maximo_x }
intr($33,regs); {}
regs.ax:=8; {n§ de la funcion }
regs.cx:=minimo_y shl 3;{nuevo minimo_y }
regs.dx:=maximo_y shl 3;{nuevo maximo_y }
intr($33,regs); {}
end;
{***************************************************************************}
procedure cursor_off;
{ * apaga el cursor del BIOS (no mouse) }
begin
regs.AH:=01;
regs.CH:=$20;
regs.CL:=12;
intr($10,regs);
end;
procedure cursor_on;
{ * restablece el cursor por defecto BIOS }
begin
regs.AH:=01;
regs.CH:=11;
regs.CL:=12;
intr($10,regs);
end;
{***************************************************************************}
END.
Micropais 31-7-2005
UNIDAD MOUSE - libreria bastante sencilla para utilizar el raton en nuestros
programillas funciona tanto en modo texto como en algunos modos graficos, no
estan todas las funciones del raton , pero si las mas basicas.
}
UNIT UMOUSE;
{°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°}
INTERFACE {.......... * simbolos publicos *..........................}
{°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°}
{ * variables globales usado por las funciones y procedimientos del raton }
var
horizontal_cursor_position,vertical_cursor_position:integer;
button_status:integer;
button:integer;
number_of_button_presses:integer;
mouse_status,number_of_buttons:integer;
horizontal_cursor_position_at_last_press:integer;
vertical_cursor_position_at_last_press:integer;
minimo_x,minimo_y,maximo_x,maximo_y:word;{ mouse_window }
x1,x2,y1,y2:word;{ mouse_window }
{............................................................................}
procedure mouse_initialization;
procedure show_cursor;
procedure hidden_cursor;
procedure get_mouse_position_and_button_status;
procedure set_mouse_cursor_position(new_horizontal_cursor_position,new_vertical_cursor_position:integer);
procedure get_button_press_information(button:integer);
procedure mouse_window(x1,y1,x2,y2:integer); {F7yF8}
procedure cursor_off;
procedure cursor_on;
{°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°}
IMPLEMENTATION {.......... * simbolos privados *......................... }
{°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°}
uses windos;
var regs:TRegisters;
procedure mouse_initialization;
{ este procedimiento chequea si el est instalado el hadrware y software
del raton si esta todo correcto devuelve en las variables Globales
mouse_status=-1 si no =0
number_of_buttons=numero de botones que dispone el raton
}
{ input ................ AX= 0
output................ AX= mouse status
BX= number of buttons}
begin
regs.AX:=0;
intr($33,regs);
mouse_status:=regs.AX;
number_of_buttons:=regs.BX;
end;
procedure show_cursor;
{ Este procedimiento activa el cursor del raton en la pantalla
input ................ AX= 1
output ............... none }
begin
regs.AX:= 1;
intr($33,regs);
end;
procedure hidden_cursor; {2}
{ Este procedimiento Oculta el cursor del raton de la pantalla
input ................ AX= 2
output ............... none }
begin
regs.AX:= 2;
intr($33,regs);
end;
procedure get_mouse_position_and_button_status; {3}
{ este procedimiento Devuelve en las variables globales
button_status = el boton o botones que se han pulsado
horizontal_cursor_position = la coordenada x del mouse
vertical_cursor_position = la coordenada y del mouse
}
{ this function report current mouse position & button status.
button down a bit is 1
button up a bit is 0 button 1 2 3
input ............... AX= 3 ± ± ±
output .............. BX= button status 1 4 2
.............. CX= horizontal cursor position
.............. DX= vertical cursor position
nota: si se pulsan varios botones a la vez el resultado
es la suma de ambos botones.
por ejemplo si se pulsa el boton 1+2 = 5
1+3 = 3
2+3 = 6
1+2+3= 7 }
begin
regs.AX:=3;
intr($33,regs);
button_status:=regs.BX;
horizontal_cursor_position:=regs.CX {div 8};
vertical_cursor_position:=regs.DX {div 8};
end;
procedure set_mouse_cursor_position(new_horizontal_cursor_position,new_vertical_cursor_position:integer);
{
this function sets cursor to a specified position on the screen.
input ............... AX = 4
............... CX = new horizontal cursor position
............... DX = new vertical cursor position
output............... none }
begin
regs.AX:= 4;
regs.CX:= new_horizontal_cursor_position ;
regs.DX:= new_vertical_cursor_position ;
intr($33,regs);
end;
procedure get_button_press_information (button:integer);
{
this function reports
1. curent button status.
2.a count of button press since the last call to function 5
3.horizontal and vertical position of the cursor,the button
was pressed last time.
input ............... AX = 5
............... BX = button ; BX =0 check left button
; BX =1 check right button
; BX =2 check middle button
output ........... AX=button status ; bit 0 left button
; bit 1 right button
; bit 2 middle button
BX= number of button presses
CX= horizontal cursor position at last press
DX= vertical cursor position at last press }
begin
regs.AX:=5;
regs.BX:=button;
intr($33,regs);
button_status:=regs.AX;
number_of_button_presses:=regs.BX;
horizontal_cursor_position_at_last_press:=regs.CX div 8;
vertical_cursor_position_at_last_press:=regs.DX div 8;
end;
procedure mouse_window(x1,y1,x2,y2:integer);
{ * establece las coordenadas minimas y maximas del mouse utiliza el mismo
sistema de coordenadas de abrir ventanas de window }
begin
minimo_x:=x1;
maximo_x:=x2;
minimo_y:=y1;
maximo_y:=y2;
regs.ax:=7; {n§ de la funcion }
regs.cx:=minimo_x shl 3 ;{nuevo minimo_x }
regs.dx:=maximo_x shl 3;{nuevo maximo_x }
intr($33,regs); {}
regs.ax:=8; {n§ de la funcion }
regs.cx:=minimo_y shl 3;{nuevo minimo_y }
regs.dx:=maximo_y shl 3;{nuevo maximo_y }
intr($33,regs); {}
end;
{***************************************************************************}
procedure cursor_off;
{ * apaga el cursor del BIOS (no mouse) }
begin
regs.AH:=01;
regs.CH:=$20;
regs.CL:=12;
intr($10,regs);
end;
procedure cursor_on;
{ * restablece el cursor por defecto BIOS }
begin
regs.AH:=01;
regs.CH:=11;
regs.CL:=12;
intr($10,regs);
end;
{***************************************************************************}
END.
Valora esta pregunta


0