Maussteuerung im Textmodus



  • Hi Leute, ich habe ein Problem: Ich suche für die Konsolenprogrammierung eine Bibliothek oder zumindest Funktionen, die sich mit der Seuerung der Maus befassen. Wisst ihr, wo ich diese finden kann?



  • übrigens arbeite ich mit dem Borland 5-Compiler



  • hm,

    sorry, das ich jetzt dir nciht weiterhelfe, aber wofür brauchst du eine Maus in der Konsole?

    Ansonsten, die Maus gibt es über die WinAPI.



  • #include <stdio.h>
    #include <dos.h>
    #include <stdlib.h>
    #include <conio.h>
    
    #define MOUSE_LBUTTON 1
    #define MOUSE_RBUTTON 2[cpp]
    #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, &regs, &regs);
        if (regs.x.ax!=0XFFFF)
        return -1;
    
        return regs.x.bx;
    }
    void mouse_on(){
    	union REGS regs;
        regs.x.ax=1;
        int86(MOUSE_INT, &regs, &regs);
    }
    
    void mouse_off(){
    	union REGS regs;
        regs.x.ax=2;
        int86(MOUSE_INT, &regs, &regs);
    }
    int mouse_getpos(int*px, int*py){
        union REGS regs;
        regs.x.ax=3;
        int86(MOUSE_INT, &regs, &regs);
    
        if(px)*px=regs.x.cx>>3;
        if(py)*py=regs.x.dx>>3;
        return regs.x.bx & 7;
    }
    


  • Dankeschön....werd ich gleich mal ausprobieren (mir ist aufgefallen, dass ich das Thread eigentlich auch in das C-Forum hätte schreiben können, naja 😃 )



  • nein, höchstens in die win32/dos konsole, das hat nix mit standard c zutun 😉



  • Hmmm.......aber geht das denn nich auch im normalen Textmod?



  • klar, aber es gehört nicht nach standard, da standard kein interesse an maus hat.


Anmelden zum Antworten