[DOS] Maus



  • Die Maussteuerung unter DOS funktioniert über Interrupts. Der Ablauf ist im Prinzip immer gleich: Eine REGS-Union wird ausgefüllt, danach wird der Interrupt ausgeführt und eine eventuelle Ausgabe in unsere REGS-Union ausgwertet.

    Hier einige sinnvolle Funktionen - vergesst nicht, dass ihr dafür einen geladenen Maustreiber benötigt!

    #include <dos.h>
    
    // Initialisiert die Maus und gibt die Anzahl der Maustasten bzw. -1 im Fehlerfall zurück
    int mouseInit ()
    {
        union REGS regs;
    
        regs.x.ax = 0x00;
        int86(0x33,&regs,&regs);
    
        if(regs.x.ax != 0)
            return -1;
        else
            return regs.x.bx;
    }
    
    // Zeigt oder versteckt den Mauscursor
    void showCursor (bool show = true)
    {
        union REGS regs;
    
        if(show)
            regs.x.ax = 0x01;
        else
            regs.x.ax = 0x02;
        int86(0x33,&regs,&regs);
    }
    
    struct COORD
    {
        SHORT x;
        SHORT y;
    };
    
    // Gibt die derzeitige Position des Mauscursors zurück
    COORD getCursorPos ()
    {
        union REGS regs;
    
        regs.x.ax = 0x03;
        int86(0x33,&regs,&regs);
    
        COORD pos;
        pos.x = regs.x.cx;
        pos.y = regs.x.dx;
        return pos;
    }
    

    Viel genauere Informationen zum Mausinterrupt findet ihr auf der Homepage von Datasource. Wenn ihr die Daten dort mit den hier ausprogrammierten Funktionen vergleicht werdet ihr sehr schnell erkennen was abzuändern ist und eigene Funktionen bauen können!

    MfG SideWinder

    PS: Wenn ihr Fehler findet, meldet euch bitte umgehend.


Anmelden zum Antworten