• Viernes 26 de Abril de 2024, 21:59

Autor Tema:  Re: rutinas del mouse  (Leído 2286 veces)

oscar francisco alvarez d

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: rutinas del mouse
« en: Viernes 15 de Marzo de 2002, 18:43 »
0
necesito hacer un programita que tenga 4 ventanas especie menu. en toda la pantalla,
necesito que el mouse cuando lo coloque en la zona caliente osea (en cada ventana)se ilumine y con un clic izquierdo lo seleccione, con 2 clic´s habra el programa de cada ventana.

xtreme

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
rutinas del mouse
« Respuesta #1 en: Sábado 16 de Marzo de 2002, 03:20 »
0
Haber espero que este codigo te ayude o al menos te de una idea de como solucionar tu problema


/****************************************************************************
 
 Nombre: MOUSE.H
 Utilidad: Programaci¢n del rat¢n en aplicaciones D.O.S.
 Autor: Sergio Pacho
 Fecha: 14 de diciembre de 1997
 E-mail: http://www.cworld.nu

 Este c¢digo est  pensado para que cualquiera pueda incluirlo en sus aplica-
 ciones.

 Lo £nico que te pido es que no modifiques los créditos, y que se lo pases a
 todos tus amigos, colegas...
 Tambi‚n puedes decir que lo has conseguido en:
 http://www.cworld.nu

 Hay m s funciones de las que aparecen aqu¡, pero estas son las m s b sicas,
 y las que utilizar s el 99% de las veces.

****************************************************************************/

/* LOS INCLUDES */

#include <stdlib.h>
#include <dos.h>


/* LAS FUNCIONES */

int mtest(void);
void mver(void);
void mocultar(void);
int mxpos(int);
int mypos(int);
void msituar(int, int, int);
int mclick(void);
void mlimit(int, int, int, int, int);


/* LAS VARIABLES */

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 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 mocultar                           */
/* Oculta el puntero del rat¢n.                  */
/* No es necesario enviar ning£n par metro.      */
/* No retorna ning£n valor.                      */
/*************************************************/

void mocultar(void)
{
   reg.x.ax = 0x2;
   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 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 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 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, ®, ®);
}
:P