das is mal der code für die diversen mausfunktionen....
is halt die maussteuerung im textmodus...der cursor ist im prinzip ein BLOCK (so wie _setcursortype(_SOLID); )
bei diversen fragen fragt einfach ganz ungeniert...

)
union REGS outregs; //global für Testauswertung wird benötigt!
void posmaus(int x, int y)
{
REGS reg;
reg.x.ax=4;
reg.x.cx=x*8-1;
reg.x.dx=y*8-1;
int86(0x33,®,®);
}
int mousecheck() //schaut ob maus existiert und #der tasten
{
union REGS inregs;
inregs.x.ax = 0;
int86(0x33,&inregs,&outregs);
return(outregs.x.ax ? outregs.x.bx : 0);
}
void mousecursor(int toggle) //schaltet mauscursor ein/aus
{
union REGS inregs;
if(toggle) inregs.x.ax = 1;
else inregs.x.ax = 2;
int86(0x33,&inregs,&outregs);
}
int mouserow() //gibt die zeile in der sich die maus
{ //befindet zurück
union REGS inregs;
inregs.x.ax = 3;
int86(0x33,&inregs,&outregs);
return(outregs.x.dx/8+1);
}
int mousecol() //gibt die spalte in der sich die maus
{ //befindet zurück
union REGS inregs;
inregs.x.ax = 3;
int86(0x33,&inregs,&outregs);
return(outregs.x.cx/8+1);
}
int mousebuttons() //schaut ob eine maustaste gedrückt
{ //ist
union REGS inregs;
inregs.x.ax=6;
int86(0x33,&inregs,&outregs);
return(outregs.x.ax & 3);
}
int mouseclick() //schaut ob maustasten gedrückt wurden
{
int click =0;
union REGS inregs;
inregs.x.ax = 5;
inregs.x.bx = 1;
int86(0x33,&inregs,&outregs);
click = outregs.x.ax << 1;
int86(0x33,&inregs,&outregs);
return(click | outregs.x.ax);
}
void mousestat(unsigned int *button, unsigned int *col, unsigned int *row)
{
union REGS inregs,outregs; //Gibt die aktuelle Position und
struct SREGS segregs; //den Tastenstatus zurück
inregs.x.ax=0x33;
int86x(0x33,&inregs,&outregs,&segregs);
*button=outregs.x.bx;
*col=outregs.x.cx;
*row=outregs.x.dx;
}
void mousetcur(char zeichen)
{
union REGS inregs,outregs; //Funktion um die art
struct SREGS segregs; //des mauscorsors zu ändern
inregs.x.ax=0x000A; //Möglich sind alle ASCII-
inregs.x.bx=0x0000; //Zeichen
inregs.x.cx=0x7700;
inregs.x.dx=0x7700;
inregs.x.dx |= zeichen;
int86x(0x33,&inregs,&outregs,&segregs);
}
void mouseget(unsigned *button, unsigned *col,unsigned *row,unsigned *keystat)
{
unsigned hbut,hcol,hrow; //hilfsvariablen
char taste;
*keystat=0;
mousestat(&hbut,col,row); //checkt den mausstatus
//einmal vorerst und dann
while(!hbut && !kbhit()) //so lange keine taste gedrückt
{ //wird-->
mousestat(&hbut,col,row); //checkt den mausstatus
}
*button=hbut; //merke gedrückte taste
while(hbut) //und warte bis die taste
{ //losgelassen wurde
mousestat(&hbut,&hcol,&hrow);
}
if(kbhit()) //wenn eine taste gedrückt
{ //(tastatur)
taste=getch(); //merke taste
*keystat |= 0x0100; //und setze flag
if(kbhit()) //check ob weitere taste
{
taste=getch();
*keystat |= 0x0200; //wenn gedrückt
*keystat |= taste; //return taste (neu)...
}
else
*keystat |= taste; //sonst alte...
}
}
sodala....bei diversen fragen steh ich gern zu verfügung...
mfg, patrick...