Herausfinden ob Maus in einem Rechteck geklickt hat



  • Hi, wie kann ich herausfinden ob die Maus zb.im bereich 10,10 100,100 geklickt hat ??

    Hoffe es ist nicht allzuschwer 🙂



  • Is recht einfach 😉

    Mausposition holen mit GetCursorPos
    einer RECT-Struktur deine Koordinaten zuweisen, in deinem Fall 10,10,100,100
    Mit PtInRect prüfen, ob die Maus im Rechteck liegt.

    Um einen Mausklick abzufangen, musst du einen Hook installieren, jedenfalls wenn der Punkt/das Rechteck nicht in einem von dir erstellten Fenster liegt.
    Dazu brauchst du SetWindowsHookEx und eine Dll, die die aufzurufende Callback-Funktion erhält.
    Wenn das Rechteck in deinem Fenster liegt, einfach die WM_LBUTTONUP abfangen 🤡

    Edit: Wenn du den Hook installierst, ruft Windows deine angegebene Funktion in deiner Dll auf. Die Funktion bekommt von Windows dann gleich schon die Mauskoordinaten übergeben, also entfällt GetCursorPos 😉



  • mir ist das leider nicht ganze klar!! erst ein

    SetRect(handler,10,10,100,100);

    und darauf ein PtInRect ?

    wie funktioniert das mit einem Kreis?



  • Warum nicht einfach per "Hand".

    x,y Der Mauskoordinaten holen und dann einfach testen:

    if(x>=10 && x<=100 && y>=10 && y<=100) { geklickt im Rechteck }

    Kreis:
    Gegeben Mittelpunkt des Kreises m=(mx,my), Radius r
    geholte Mauskoordinaten X,Y

    if ((x-mx)(x-mx)+(y-my)(y-my)<= r*r) { geklickt im Kreis }



  • super danke funktioniert einwandfrei 🙂 danke für die schnelle Antwort!!


Anmelden zum Antworten