Hallo,
Warum funktionert folgender code unter visual c++ 6 nicht ?
bitte um Hilfe.
danke im Voraus.
Warum funktionert folgender code unter visual c++ 6 nicht ?
bitte um Hilfe.
danke im Voraus.
Code:
//Header Datei
#ifndef mhmouseH
#define mhmouseH
#include <dos.h>
#include <stdlib.h>
struct TMaus
{
unsigned int Func,Taste,X,Y;
short TextModus;
} Maus;
void MausDa(unsigned int Nr)
{
asm {
mov AX,Nr;
int 0x33;
}
}
void ShowMouse(short Show)
{
//Schaltet den Mauszeiger an/aus
if (Show==1) MausDa(1);
else MausDa(2);
}
short MausReset(short TextModus)
//Initialisiert die Maus; liefert 0, wenn kein Maustreiber installiert
//ist
{
Maus.TextModus=TextModus;
if (peek(peek(0,0xCC+2),peek(0,0xCC))!=0xCF)
{
MausDa(0);
MausDa(1);
return 1;
}
else return 0;
}
void MausInt()
{
unsigned int a=Maus.Func, b=Maus.Taste, c=Maus.X, d=Maus.Y;
asm {
mov AX,a;
mov BX,b;
mov CX,c;
mov DX,d;
int 0x33;
mov a,AX;
mov b,BX;
mov c,CX;
mov d,DX;
}
Maus.Func=a; Maus.Taste=b; Maus.X=c; Maus.Y=d;
}
void MausData()
//belegt die Mausvariable "X","Y" und "Taste" mit aktuellen Daten
{
Maus.Func=3; MausInt();
if (Maus.TextModus)
{
Maus.X=div(Maus.X,8).quot;
Maus.Y=div(Maus.Y,8).quot;
}
Maus.Y++;
Maus.X++;
}
void MausWindow(int X1, int Y1, int X2, int Y2)
//Setzt ein Mausfenster von X1,Y1 bis X2,Y2
{
X1--;X2--;Y1--;Y2--;
if (Maus.TextModus==1)
{
X1*=8;
X2*=8;
Y1*=8;
Y2*=8;
}
MausDa(2);
Maus.Func=7; Maus.X=X1; Maus.Y=X2;
MausInt();
Maus.Func=8; Maus.X=Y1; Maus.Y=Y2;
MausInt();
MausDa(1);
}
#endif
//Main Datei
#include "mouse.h"
#include <conio.h>
void main()
{
clrscr();
MausReset(1);
while (!kbhit())
{
MausData();
gotoxy (10,10);
cprintf ("X: %d Y: %d Taste: %d ",Maus.X,Maus.Y,Maus.Taste);
}
kbhit();
ShowMouse(0);
}