Maus abfangen

Previous topic - Next topic

Worebu

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.
Intel I5 9600 - RTX 4070, WaKü, 32GB RAM, 1x 512gb + 1x 1Gb NVRAM,  1x4TB + 1x1TB HD

D2O

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