eh! a las guenas noches!
Bueno te he hecho un pequeño programilla que te dibuja una linea con el mouse. El metodo utilizado es "algo" (por no decir mucho) chapucero, pero imagino que funcionara. No lo he compilado, ya que usa alguna libreria (dos.h) la cual no puedo utilizar. En principio, debe funcionar con el Turbo C.
Bueno existe otro metodo mejor que es programando las interrupciones del mouse, pero es mucho mas complicado y me temo que ahi solo te puedo ayudar explicandote el metodo, pero de codigo nada.
Bueno espero que te sirva. Si no te funciona me das el toque y lo miro. Saludos.
#include <dos.h>
#include <stdio.h>
/* modo grafico 13h y modo consola */
#define MOD_GRAF 8
#define MOD_TEXT 1
void mostrar(void);
int xpos(int modo);
int ypos(int modo);
int click(void);
void inimodo(char mode);
union REGS reg;
void main()
{
int x, y, a;
int color;
inimodo(0x13);
color = 1; /* creo que el azul */
while ((a = click()) != 1); /* mientras el boton izquierdo no sea presionado */
/* mientras el boton siga presionado pinta un pixel el la posicion del mouse */
do
{
x = xpos(MOD_GRAF);
y = ypos(MOD_GRAF);
putpixel(x,y,color);
} while ((a = click()) == 1);
}
void inimodo(char mode)
{
/* se puede utilizar el initgraph() de to la vida */
asm xor ah, ah
asm mov al, mode
asm int 10h
}
int xpos(int modo)
{
/* devuelve la coordenada x del mouse */
reg.x.ax = 0x3;
int86(0x33, ®, ®);
return reg.x.cx/modo;
}
int ypos(int modo)
{
/* devuelve la coordenada y del mouse */
reg.x.ax = 0x3;
int86(0x33, ®, ®);
return reg.x.dx/modo;
}
int click(void)
{
/* devuelve si hay algun boton presionado, 0 = no, 1 = izquierdo, 2 = derecho */
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;
}
void mostrar(void)
{
/* muestra el puntero de la rata */
reg.x.ax = 0x1;
int86(0x33, ®, ®);
}