Unterbrechung eines Programmes
-
merker schrieb:
Eventuell hilft ein neuer (alter) Maustreiber :
http://ftp2.ua.freebsd.org/pub/msdos/drivers/mouse/hgxmou10.zipJa hab ich schon ausprobiert, aber der funktioniert bei mir nicht.
Daher möchte ich gerne wissen wie das mit den Interrupts funktioniert.
-
-
ok offensichtlich funktoniert hgx mouse doch bei mir allerdings kann ich die maus nur in einem gewissen bereich bewegen!
bitte probiert es einmal aus!
Hier noch Dateien die man benötigt(einfach ins gleiche verzeichnis kopieren wie die main.cpp und mouse.h)
HGXMOUSE DOWNLOAD//main.cpp #include <conio.h> #include <dos.h> #include <graphics.h> #include <stdio.h> #include <stdlib.h> #include "mouse.h" void InitializeGraphMode(void); huge svgamode(void); int hgxInit(void); void main() { InitializeGraphMode(); system("HGXMOUSE.EXE"); hgxInit(); InitMouse(); HideM(); setfillstyle(SOLID_FILL, LIGHTGRAY); bar(0,0,getmaxx(),getmaxy()); ShowM(); getch(); } void InitializeGraphMode(void) { int GraphDriver = DETECT; int GraphMode; int ErrorCode; installuserdriver("svga256", svgamode ); initgraph( &GraphDriver, &GraphMode, "" ); ErrorCode = graphresult(); if( ErrorCode != grOk ) { printf(" Graphik System Fehler: %s\n", grapherrormsg( ErrorCode ) ); getch(); exit( 1 ); } } huge svgamode(void) { return 4; } int hgxInit(void) { union REGS regs; regs.x.ax = 0x4500; regs.x.si = getmaxx()+1; // X resolution regs.x.di = getmaxy()+1; // Y resolution regs.h.bl = 0; // MODE_P8 regs.x.dx = getmaxx()+ 1; // Bytes per line int86(0x33, ®s, ®s); return ((regs.h.al == 0x45) ? 1 : 0); }
//mouse.h #define NO_BUTTON 0 #define BUTTON_LEFT 1 #define BUTTON_RIGHT 2 #define BUTTON_BOTH 3 void GrenzenX(int x1,int x2); void GrenzenY(int y1,int y2); void InitM(void); void HideM(void); void ShowM(void); int GetMx(void); int GetMy(void); int MHit(void); void InitHand(void); REGS re; struct REGPACK reg; int MMode; void GrenzenX(int x1,int x2) { re.x.ax=7; re.x.cx=x1; re.x.dx=x2; int86(0x33,&re,&re); } void GrenzenY(int y1,int y2) { re.x.ax=8; re.x.cx=y1; re.x.dx=y2; int86(0x33,&re,&re); } void InitMouse(void) { reg.r_ax=0; intr(0x33,®); reg.r_ax=1; intr(0x33,®); } void HideM(void) { reg.r_ax=2; intr(0x33,®); } void ShowM(void) { reg.r_ax=1; intr(0x33,®); } int GetMx(void) { reg.r_ax=3; intr(0x33,®); return(reg.r_cx); } int GetMy(void) { reg.r_ax=3; intr(0x33,®); return(reg.r_dx); } int MHit(void) { reg.r_ax=3; intr(0x33,®); return(reg.r_bx); }
-
Habs zwar nicht ausprobiert, aber Du solltest nach "InitMouse ()" den Bereich noch einstellen :
... InitMouse (); GrenzenX (1,639); // horz : 640 GrenzenY (1,479); // vert : 480 ...oder wie auch immer :-) ...
-
merker schrieb:
Habs zwar nicht ausprobiert, aber Du solltest nach "InitMouse ()" den Bereich noch einstellen :
... InitMouse (); GrenzenX (1,639); // horz : 640 GrenzenY (1,479); // vert : 480 ...oder wie auch immer :-) ...
nö funktioniert nicht!
-
Was liefert "MOUSTEST.EXE" ?
-
moustest.exe ist nur zum testen der maus bei einer auswählbaren treiber und auflösung und daher unwichtig für mich