Anterior | Home | Siguiente |
Las siguientes rutinas son de uso público y permiten incorpar el uso del mouse en programas en C
#include <stdlib.h> #include <dos.h> #include <conio.h> union REGS reg; /*************************************************/ /* LA FUNCION mtest */ /* Esta función sirve para testear el ratón. */ /* No es necesario enviar ningún par metro. */ /* Retorna: 0 => no hay ratón instalado. */ /* n => el número de botones del ratón. */ /*************************************************/ int mtest(void) { reg.x.ax = 0x0; int86(0x33, ®, ®); if (reg.x.ax > 0) return reg.x.bx; /* número de botones */ else return 0; } /*************************************************/ /* LA FUNCION mlimit */ /* Limitamos el espacio de movilidad del ratón. */ /* Es necesario enviar cinco par metros. */ /* modo => 1 => modo gráfico. */ /* 8 => modo texto. */ /* x1 => l¡mite arriba. */ /* y1 => l¡mite izquierda. */ /* x2 => l¡mite abajo. */ /* y2 => l¡mite derecha. */ /* No retorna ningún valor. */ /*************************************************/ void mlimit(int modo, int x1, int y1, int x2, int y2) { reg.x.ax = 0x7; reg.x.cx = x1*modo; reg.x.dx = x2*modo; int86(0x33, ®, ®); reg.x.ax = 0x8; reg.x.cx = y1*modo; reg.x.dx = y2*modo; int86(0x33, ®, ®); } /*************************************************/ /* LA FUNCION msituar */ /* Situamos el ratón en las coordenadas deseadas */ /* Es necesario enviar tres par metros. */ /* modo => 1 => modo gráfico. */ /* 8 => modo texto. */ /* x => posición horizontal. */ /* y => posición vertical. */ /* No retorna ningún valor. */ /*************************************************/ void msituar(int modo, int x, int y) { reg.x.ax = 0x4; reg.x.cx = x*modo; reg.x.dx = y*modo; int86(0x33, ®, ®); } /*************************************************/ /* LA FUNCION mver */ /* Muestra el puntero del ratón. */ /* No es necesario enviar ningún par metro. */ /* No retorna ningún valor. */ /*************************************************/ void mver(void) { reg.x.ax = 0x1; int86(0x33, ®, ®); } /*************************************************/ /* LA FUNCION mxpos */ /* Nos dice la coordenada X del ratón. */ /* Es necesario enviar un par metro. */ /* 1 => modo gráfico. */ /* 8 => modo texto. */ /* Retorna la posición horizontal del ratón. */ /*************************************************/ int mxpos(int modo) { reg.x.ax = 0x3; int86(0x33, ®, ®); return reg.x.cx/modo; } /*************************************************/ /* LA FUNCION mypos */ /* Nos dice la coordenada Y del ratón. */ /* Es necesario enviar un par metro. */ /* 1 => modo gráfico. */ /* 8 => modo texto. */ /* Retorna la posición vertical del ratón. */ /*************************************************/ int mypos(int modo) { reg.x.ax = 0x3; int86(0x33, ®, ®); return reg.x.dx/modo; } /*************************************************/ /* LA FUNCION mclick */ /* Nos dice si hay algún botón presionado. */ /* No es necesario enviar ningún par metro. */ /* Retorna: 0 => ningún botón presionado. */ /* 1 => botón izquierdo presionado. */ /* 2 => botón derecho presionado. */ /*************************************************/ int mclick(void) { int r = 0; reg.x.ax = 0x5; reg.x.bx = 0; int86(0x33, ®, ®); if ((reg.x.ax) & 1) r = 1; else if ((reg.x.ax>>1) & 1) r = 2; return r; }
La union REGS es utilizada para pasar información hacia y desde funciones como int86.
REGS tiene la siguiente estructura:
union REGS { struct WORDREGS x; struct BYTEREGS h; };
int86 es una función de DOS.H que permite interactuar con las interrupciones de la arquitectura 8086.
Anterior | Home | Siguiente |
© 2000 Made in Bufoland