Mausposition und -tasten ermitteln
-
Hallo,
hat einer von euch schon mal was mit der Maus unter DOS gemacht? Ich müsste die Position des Mauszeigers ermitteln und welche Taste gedrückt wird. Ich hab in der FAQ leider nur einen Beitrag gefunden, wie man die Maus über API ansteuert, aber ich brauch es für reines DOS.
Ich glaub elise hat da was, oder?
-
google mal nach "mouse driver interrupt".
-
Sieh dir dazu mal dieses Dokument an: http://www.datasource.de/programmierung/tab19_dosint33h.htm
Hier ein ausprogrammiertes BSP dazu: http://www.datasource.de/programmierung/toolbox_pascal_01.htm
Allerdings in Pascal. Das dürfte aber nicht schwer zum Ändern sein.
MfG SideWinder
[ Dieser Beitrag wurde am 07.07.2003 um 16:45 Uhr von SideWinder editiert. ]
-
hmm eigentlich stand das irgendwann mal in der faq...
ein beispiel:
#include <stdio.h> #include <dos.h> #include <stdlib.h> #include <conio.h> #define MOUSE_LBUTTON 1 #define MOUSE_RBUTTON 2 #define MOUSE_MBUTTON 3 const int MOUSE_INT=0X33;; int mouse_init(); void mouse_on(); void mouse_off(); int mouse_getpos(int*px, int*py); int main(){ int tasten; int posx, posy; if ((tasten=mouse_init())==-1) { printf("keine maus da"); return EXIT_FAILURE; } printf ("Maus mit %d Tasten installiert.\n", tasten); printf ("zum beenden druecke eine maustaste\n"); mouse_on(); while(! (tasten=mouse_getpos(&posx, &posy))); printf("an der position %d/%d wurde die ", posx, posy); if(tasten & MOUSE_LBUTTON) printf (" linke %d",MOUSE_LBUTTON ); if(tasten & MOUSE_RBUTTON) printf (" rechte %d",MOUSE_RBUTTON); if((tasten & MOUSE_MBUTTON)==MOUSE_MBUTTON) printf (" mittlere %d",MOUSE_MBUTTON); //mouse mbutton hat mehrere bits printf (" Tasten gedrueckt\n"); mouse_off(); return EXIT_SUCCESS; } int mouse_init(){ union REGS regs; regs.x.ax=0; int86(MOUSE_INT, ®s, ®s); if (regs.x.ax!=0XFFFF) return -1; return regs.x.bx; } void mouse_on(){ union REGS regs; regs.x.ax=1; int86(MOUSE_INT, ®s, ®s); } void mouse_off() { union REGS regs; regs.x.ax=2; int86(MOUSE_INT, ®s, ®s); } int mouse_getpos(int*px, int*py) { union REGS regs; regs.x.ax=3; int86(MOUSE_INT, ®s, ®s); if(px)*px=regs.x.cx>>3; if(py)*py=regs.x.dx>>3; return regs.x.bx & 7; }
-
Danke euch dreien.
@elise
In der FAQ hab ich es leider nicht gefunden, nur den Quellcode mit API.@side
Diesen Thread könntest du eigentlich in die FAQ stellen.
-
@AJ: Ja in der FAQ steht das auch nicht.
@elise: Keine falschen Anschuldigungen - das stand unter meiner Regierung hier niemals drin - ich hab das weder gelöscht noch verändert!
Nur weil da drei Punkte hinter faq waren
MfG SideWinder
-
"Regierung" ?
-
Na klar - hab ja auch den God-(eh Mod-)Status
MfG SideWinder
-
Side unser Diktator