• No se han encontrado resultados

CAPÍTULO 12 MANEJO DEL RATÓN

N/A
N/A
Protected

Academic year: 2021

Share "CAPÍTULO 12 MANEJO DEL RATÓN"

Copied!
5
0
0

Texto completo

(1)

MANEJO DEL RATÓN

12.1. UTILIZANDO INT 0X33 (SÓLO PARA MS-DOS)

El ratón puede ser inicializado y utilizado utilizado la int 0x33, esta provee todas las funciones necesarias, pero es necesario, a partir de ellas, generar nuevos procedimientos para hacer más simple el manejo y la programación posterior.

Para trabajar con el ratón debemos inicializar el modo gráfico, este permite generar el cursor de ratón tradicional (flecha), sin embargo, también es posible modificarlo y/o hacerlo desaparecer, aparecer en el el momento que se desee.

La tablas 12.1 y 12.2 contienen la funciones de la int 0x33 para el manejo del ratón. Las funciones deben ser pasadas en el registro AH.

Función Descripción Parámetros

0x00 Comprueba si el ratón está instalado Salida:

AX = 0, si no está instalado -1, si está instalado BX = # de botones

0x01 Aperece el cursor del ratón 0x02 Esconde cursor

0x03 Estado de los botones y posición del cursor

Salida: BX = Estado

Bit 0 : Botón izq. Bit 1 : Botón der. 0: Liberado

1: Pulsado CX = Posición X DX = Posición Y

0x04 Posiciona el cursor Entrada:

CX = Posición X DX = Posición Y 0x05 Estado de los pulsadores y número de

veces que han sido pulsados desde la última llamada a esta función.

Entrada:

BX = Botón comprobado 0: Izq.

1: Der. Salida:

AX = Estado de los botones BX = Número de pulsaciones CX = Posición X

DX = Posición Y

Desde la última vez que se pulsó.

(2)

Función Descripción Parámetros 0x06 IDEM para la liberación de los botones

0x07 Límite de desplazamiento horizontal del cursor

Entrada:

CX = Columna Izq. DX = Columna Der. 0x08 Límite de desplazamiento vertical del

cursor

Entrada:

CX = Línea Inferior DX = Línea Superior 0x09 Define la forma, color y punto central

del cursor, sólo se aplica en modo gráfico.

Entrada:

BX = Posición X CX = Posición Y

Del centro del cursor ES:DX = Dirección de la máscara de la pantalla y del cursor.

Tabla 12.2. (Continuación) Funciones de la int 0x33 para manejo de ratón.

La máscara de pantalla y del cursor permite crear un cursor de acuerdo a los requerimientos del usuario, cada una de las máscaras corresponde a un cursor mapeado en 16x16 bit.

Ej 12.1. Programa simple para manejo de ratón. #include <stdio.h>

#include <conio.h> #include <graphics.h> #include <dos.h>

union REGS rent, rsal; int maxx,maxy;

void main(void) {

int gdriver = VGA, gmode=VGAHI;

initgraph(&gdriver, &gmode, "c:\\tc\\bgi"); setcolor(LIGHTBLUE);

rectangle(0, 0,maxx= getmaxx(),maxy= getmaxy());

rent.x.ax=0x00; /* Inicializa raton con cursor por defecto */ int86(0x33,&rent,&rsal);

rent.x.ax=0x01; /* Aparece cursor por defecto */ int86(0x33,&rent,&rsal);

rent.x.ax=0x04; /* Posiciona el cursor al centro */ rent.x.cx=maxx/2;

rent.x.dx= maxy / 2; int86(0x33,&rent,&rsal);

(3)

rent.x.ax=0x07; /* Limite horizontal */ rent.x.cx=0;

rent.x.dx= maxx-200; int86(0x33,&rent,&rsal);

rent.x.ax=0x08; /* Limite vertical */ rent.x.cx=0; rent.x.dx= maxy-100; int86(0x33,&rent,&rsal); getch(); closegraph(); }

Para realizar un manejo un poco más elaborado es conveniente generar nuevas funciones que puedan er más fáciles de usar, evidentemente estas funciones deben contener el llamado a la int 0x33.

Ej 12.2. Manejo de ratón usando funciones para chequeo de estado del botón izquierdo.

Se ha creado nuevas rutinas para manejar el ratón usando la int 0x33, el programa inicializa el ratón para trabajar en un área limitada, luego sensa si ha sido presionado el botón izquierdo, a la vez va obteniendo las coordenadas del ratón. Estas coordenadas se usan para determinar si en ese momento la pulsación fue hecha sobre determinada zona. Para este ejemplo, verifica si el ratón fue pulsado sobre el área definida por el rectangulo verde.

#include <stdio.h> #include <conio.h> #include <graphics.h> #include <dos.h>

union REGS rent, rsal; int maxx,maxy; struct area { int xi; int yi; int xf; int yf; } area_salida={10,80,100,100};

/* Declaracion de rutinas para manejo de raton */

void inimouse(void); void nmouse(void);

void mousexy(int x, int y);

void limouse(int xi, int yi, int xf, int yf); void check_click_izq(int *x, int *y);

(4)

void main(void) {

int gdriver = VGA, gmode=VGAHI; int xmouse, ymouse,st_sal=0;

initgraph(&gdriver, &gmode, "c:\\tc\\bgi"); setcolor(LIGHTBLUE);

rectangle(0, 0,maxx= getmaxx(),maxy= getmaxy()); setcolor(GREEN); rectangle(10,80,100,100); outtextxy(20,90,"AREA SAL"); inimouse(); limouse(10,10,100,100); while(!st_sal) { check_click_izq(&xmouse, &ymouse); st_sal=check_area(xmouse,ymouse, area_salida); } closegraph(); } void inimouse(void) {

rent.x.ax=0x00; /* Inicializa raton con cursor por defecto */ int86(0x33,&rent,&rsal);

rent.x.ax=0x01; /* Aparece cursor por defecto */ int86(0x33,&rent,&rsal);

}

void nmouse(void) {

rent.x.ax=0x02; /* Esconde cursor */ int86(0x33,&rent,&rsal);

}

void mousexy(int x, int y) {

rent.x.ax=0x04; /* Posiciona el cursor en (x,y) */ rent.x.cx= y;

rent.x.dx= x;

int86(0x33,&rent,&rsal); }

void limouse(int xi, int yi, int xf, int yf) {

/* yi<yf e xi<xf */

rent.x.ax=0x07; /* Limite horizontal */ rent.x.cx=xi;

rent.x.dx= xf;

int86(0x33,&rent,&rsal);

rent.x.ax=0x08; /* Limite vertical */ rent.x.cx=yi;

rent.x.dx= yf;

int86(0x33,&rent,&rsal); }

(5)

void check_click_izq(int *x, int *y) { do { rent.x.ax=3;rent.x.bx=0; int86(0x33,&rent,&rsal);

*x=rsal.x.cx; /* Retorna por referencia x e y */ *y=rsal.x.dx;

} while(rsal.x.bx!=1); }

int check_area(int xm,int ym,struct area areasal) { if((xm>areasal.xi)&&(xm<areasal.xf) &&(ym>areasal.yi)&&(ym<areasal.yf)) { return(1); } else return(0); }

Referencias

Documento similar

Comentaremos de modo más particularizado este tipo de HPLC, por ser el tipo de cromatografía de líquidos más ampliamente utilizado y el que hemos utilizado en la parte

Si clicamos con el botón derecho del ratón, también sobre el nombre de la carpeta, o hacemos un clic normal sobre su icono, o sobre el circulito que aparece al poner el ratón

Sin embargo, para obtener las capacidades de teclado y ratón, utilice el cable adaptador de teclado y ratón suministrado con la placa RILOE II, el cable de Remote Insight de 16 pines

El ratón TRUST 350L MOUSE OPTICAL está provisto de cinco botones, una rueda de desplazamiento y un soporte muy útil para colocar el ratón cuando no se está utilizando.. El ratón es

El ratón TRUST 350W MOUSE WIRELESS está provisto de cinco botones, una rueda de desplazamiento y un soporte muy útil para colocar el ratón cuando no se está utilizando.. El ratón

—Le ruego —dice la señorita Olympe— que no denigre a la señora Gervais que me ha confiado este trabajo por caridad.. Casi todas las señoras tienen mucho gusto de

En todas las etapas educativas, desde la primera infancia, un patio habitable puede ser utilizado como espacio de vida donde desarrollar todo tipo de actividades.. Escuela

En estos trabajos se muestra como el teorema Chino de los restos puede ser utilizado para obtener esquemas que realizan estructuras umbrales a partir de secuencias de enteros