Problem beim Mouse capturen



  • Moinsen,

    folgendes Problem: Wenn ich bei WM_LBUTTONDOWN die Maus capture und danach bei WM_MOUSEMOVE die Mauskoordinaten (lparam) abfrage, kommen ziemlich (für eine Mouseposition) hohe Werte heraus, wenn ich mit der Maus links aus dem Fenster gehe.
    Dies kann man auch bei dem Programm vom Herrn Petzold sehen, wo man die Rechtecke ziehen kann (Kapitel 7 glaub ich). Geht man dort mit der Maus links (oder auch oben) aus dem Fenster, werden die Rechtecke nach rechts hin buckegroß.
    Hat jemand einen Plan woran das liegen könnte und wie man das evtl. verhindern kann?

    Thx schonmal



  • The coordinate is relative to the upper-left corner of the client area.

    Du speicherst den Wert offenbar in einer unsigned Variable - deswegen werden die entstehenden negativen Werte als riesengroße Positive dargestellt 🙄
    Schau dir dazu vielleicht auch noch ClientToScreen an, falls du an den Bildschirm-Koordinaten interesiert bist



  • Ich weiß, dass die Koordinaten "relative to the upper-left corner of the client area" sind... Ich brauche ja auch die Client-Koordinaten und nicht die Screen-Koordinaten. Deswegen würde mir ClientToScreen nichts nützen.

    Ich habe das vorerst so gelöst, dass ich die abfrage ob die Werte größer 32767 sind. Wenn das so sein sollte ziehe ich 65535 ab und habe den entsprechenden Wert. Aber ich weiß ja nicht, ob es nicht irgendwie anders geht...



  • Ich zitiere:

    flenders schrieb:

    Du speicherst den Wert offenbar in einer unsigned Variable



  • Versuch's mal mit SHORT als Datentyp - bin mir nicht sicher, aber könnte klappen 🙄
    Verwendest du GET_X_LPARAM(lParam) und GET_Y_LPARAM(lParam) oder alternativ MAKEPOINTS



  • Ich habe es jetzt vorher nach short gecastet und dann erst dem Punkt zugewiesen. Funzt jetzt einwandfrei.
    (Verwende LOWORD (lparam) und HIWORD (lparam))

    Danke soweit...


Anmelden zum Antworten