BASIC

Author Topic: Maus abfangen  (Read 77 times)

Offline Worebu

  • Mr. Polyvector
  • ***
  • Posts: 153
  • Moin, Moin
    • View Profile
Maus abfangen
« on: 2018-Feb-10 »
Moinsen,
hat jemand eine Idee wie einfach die Maus abfangen kann, so das sie nicht durch alle abfragen rast ?. Ich möchte mit einem Tastendruck der Maus Musik an und Ausschalten.  Allerdings weiss ich nicht wir ich sie davon anhalten soll durch beide Abfragen durchzugehen und mir die Musik wieder anzuschalten.

Code: GLBasic [Select]
WHILE TRUE
        MOUSESTATE mx,my,b1,b2  // Mauskoordinaten

        // Play
        //
        IF mx > 437 AND mx < 587 AND my > 427 AND my < 577 AND b1 = TRUE AND ISMUSICPLAYING() = FALSE
                PLAYMUSIC "04.mp3",FALSE
        ENDIF
       
        // Stop
        //
        IF mx > 437 AND mx < 587 AND my > 427 AND my < 577 AND b1 = TRUE AND ISMUSICPLAYING() = TRUE
                STOPMUSIC
        ENDIF

        SHOWSCREEN
WEND

 

Das ist mal ein kleines Beispiel.
PC: Intel I7 3770K, 32GB DDR3, GTX1060 6GB,  480GB SSD, 1x2TB, 1x1TB, 2x ext. 1TB USB3.0, 1x ext. 2TB USB3.0, W10 x64 Pro, WaKü

Offline D2O

  • Prof. Inline
  • *****
  • Posts: 1055
    • View Profile
    • http://www.deuteriumoxid.com
Re: Maus abfangen
« Reply #1 on: 2018-Feb-11 »
Hallo @Worebu,

ich glaube das was Du suchst, wäre eine MouseHit() funktion.
Da hab ich noch was, ist aber fast 10 Jahre her, man oh man, so Alt bin ich schon ;)

Schranz0r hatte damal auch mal was geschrieben.
Hier mal der Code von mir und der Link zu dem thread.

http://www.glbasic.com/forum/index.php?topic=2572.msg19177#msg19177
oder gib in der SuFu mal "MouseHit" ein.
Schönen Sonntag noch :)

Code: GLBasic [Select]
// --------------------------------- //
// Project: Mousehit
// Start: Saturday, June 21, 2008
// IDE Version: 5.300



GLOBAL f1 = 200
GLOBAL f2 = 0
GLOBAL f3 = 50

GLOBAL f4 = 50
GLOBAL f5 = 50
GLOBAL f6 = 3

LOCAL mx,my,b1,b2

WHILE TRUE
        MOUSESTATE mx,my,b1,b2  ///Mouse Initialisieren

        MouseHitUpdate(b1,b2) // Abfrage welche Mousetasten überprüft werden sollen



                                // Mousbutton 1
                IF MouseHit(1) = 1  // (1) = b1 | (2) = b2
                                                        // Returns >>  1 = MouseHit | 2 = MouseDown | -1 = release event | 0 = Nothing
                                f1 = RND(255)
                                f2 = RND(255)
                                f3 = RND(255)
                ENDIF

                                // Mousbutton 2
                IF MouseHit(2) = 1
                                f4 = RND(255)
                                f5 = RND(255)
                                f6 = RND(255)
                ENDIF


        DRAWRECT 10,10,100,100,RGB(f1,f2,f3)
        DRAWRECT 115,10,100,100,RGB(f4,f5,f6)




SHOWSCREEN
WEND
END


//////////////////////////////////////////////////////////////////////////////////////////////////////

FUNCTION MouseHitUpdate : l_1 = 0, l_2 = 0

GLOBAL gMouseDown[], gMouseState[]
GLOBAL K[]
        DIM K[3]

LOCAL i
    // First Time call/ zum ersten Mal hier
    IF BOUNDS(gMouseDown[],0)=0
        DIM gMouseDown[7]
        DIM gMouseState[7]
    ENDIF

    // For each key / für jede Taste
    FOR i=0 TO 2
       // k = KEY(i)  ////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
       K[0] = 0  //Dummy, für das bessere verständnis ;)  Button 1 - 2

       K[1] = l_1
       K[2] = l_2


        // Key is pressed / Taste ist gedrückt
        IF K[i]
            IF gMouseDown[i]
                gMouseState[i]=2  // war 1
            ELSE
                gMouseDown[i]=2  // war 1
                gMouseState[i]=1 // war 2
            ENDIF
        ELSE
            // Key is not pressed / Taste nicht gedrückt

            // Has key been pressed before?
            // War die Taste gedrückt?
            IF gMouseDown[i]
                gMouseDown[i] = 0
                gMouseState[i] = -1
            ELSE
               gMouseState[i]=0
            ENDIF
        ENDIF
    NEXT
ENDFUNCTION





//  0 = not pressed / nicht gedrückt
//  1 = just pressed / gerade runtergedrückt
//  2 = pressed / gedrückt (gehalten)
// -1 = release event / wieder losgelassen

// Liefert den aktuellen zustand zurück, Max 6 Mousbuttons 1-6
FUNCTION MouseHit : mKEY
// SIcherheits abfrage
        IF mKEY > 2 THEN mKEY = 0
        IF mKEY < 0 THEN mKEY = 0

        RETURN gMouseState[mKEY]
ENDFUNCTION


 
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell