Usando el Mouse en C


Este código está formado en parte por instrucciones básicas del C y, al mismo tiempo, por instrucciones de bajo nivel en ensamblador. En el código de abajo se muestra el funcionamiento del mismo. Se ha hecho lo mas simple posible para que pueda ser usado como punto de partida para otros usos. Puede bajar el archivo mouse.c para evitar errores en el copiado.

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

int MirarPuntero(void);
int MostrarPuntero(void);
int BotonPulsado(void);
int CorHTexto(void);
int CorVTexto(void);

void main(void)
  {
  if(!MirarPuntero())
    {
    clrscr();
    printf("ERROR... MOUSE NO DETECTADO\n\n");
    exit(1);
    }
  clrscr();
  _setcursortype(_NOCURSOR);
  gotoxy(20,1);printf("PROGRAMACION DEL MOUSE");
  MostrarPuntero();
  do
    {
    gotoxy(3,3);printf("Fila: : %2d",CorVTexto());
    gotoxy(3,4);printf("Columna : %2d",CorHTexto());
    switch(BotonPulsado())
      {
      case 0:
        gotoxy(32,11); printf("NINGUN BOTON PULSADO ");
        break;
      case 1:
        {
        gotoxy(32,11); printf("BOTON IZQUIERDO PULSADO ");
        sound(1000); delay(50); nosound();
        break;
        }
      case 2:
        {
        gotoxy(32,11); printf("BOTON DERECHO PULSADO ");
        sound(800); delay(50); nosound();
        break;
        }
      }
    }
    while (!kbhit());

  _setcursortype(_NORMALCURSOR);

  } /* CIERRE DEL PROGRAMA */

int MirarPuntero(void)
  {
  asm xor ax, ax
  asm int 33h
  asm cmp ax, -1
  asm je Existe_Raton
  return 0;
  Existe_Raton:
  return 1;
  }

int MostrarPuntero(void)
  {
  asm mov ax, 01h
  asm int 33h
  return 1;
  }

int BotonPulsado()
  {
  asm mov ax, 03h
  asm int 33h
  return _BX;
  }

int CorHTexto(void)
  {
  asm mov ax, 03h
  asm int 33h
  return (_CX/8)+1;
  }

int CorVTexto(void)
  {
  asm mov ax, 03h
  asm int 33h
  return (_DX/8)+1;
  }