Message erzeugen



  • Die Erneuerung der Anzeige bei Mausbewegungen geschiet dadurch, daß bei JEDER Veränderung des Fensters, also auch das Verschieben des Cursors, eine WM_PAINT-Nachricht gesendet wird. Mit dieser Nachricht wird das Fenster aktualisiert.
    Man kann die WM_PAINT selbst auslösen, indem man den Fensterbereich für ungültig erklärt mit InvalidateRect(...)



  • Elektronix schrieb:

    Die Erneuerung der Anzeige bei Mausbewegungen geschiet dadurch ... das Verschieben des Cursors, eine WM_PAINT-Nachricht gesendet wird.

    das wäre ja schlimm, dann würde bei jeder mausbewegung jedes fenster unter dem mauscursor wild flackern...;)



  • könnnen auf treiber-ebene nicht Interrupt entgegen genommen werden...



  • Hallo,

    für so einen Thread mit eingbautem sleep() gibt es doch sicher schon fertigen Code. Das muss doch ein häufiges Problem sein. Hat jemand eine Idee, wo man sowas findet ? Wo im Programm müsste ich den denn starten, nachdem ich ihn initialisiert habe.

    Eine Interrupt-Abfrage wäre natürlich ideal. Allerdings weiß ich nicht, welcher Interrupt dafür geeignet wäre. Auch fühle ich mich nicht erfahren genug, um einen Treiber zu programmieren. Gibt es dafür vielleicht auch eine fertig-Lösung ?

    Florian



  • pale dog schrieb:

    Elektronix schrieb:

    Die Erneuerung der Anzeige bei Mausbewegungen geschiet dadurch ... das Verschieben des Cursors, eine WM_PAINT-Nachricht gesendet wird.

    das wäre ja schlimm, dann würde bei jeder mausbewegung jedes fenster unter dem mauscursor wild flackern...;)

    Wie geht's denn sonst? Anderenfalls müßte doch der Pfeil immer stehen bleiben bzw einen Schwanz hinter sich herziehen. 😕



  • Elektronix schrieb:

    pale dog schrieb:

    Elektronix schrieb:

    Die Erneuerung der Anzeige bei Mausbewegungen geschiet dadurch ... das Verschieben des Cursors, eine WM_PAINT-Nachricht gesendet wird.

    das wäre ja schlimm, dann würde bei jeder mausbewegung jedes fenster unter dem mauscursor wild flackern...;)

    Wie geht's denn sonst? Anderenfalls müßte doch der Pfeil immer stehen bleiben bzw einen Schwanz hinter sich herziehen. 😕

    wahrscheinlich wird bei mausbewegungen einfach das hintergrundbitmap restauriert, eventuell mit unterstützung der grafikhardware (sprites wie beim C64)...



  • Das Cursor-zeichnen übernimmt die Graka ("Hardware-Cursor"), wenn man Hardware-Beschleunigung etwas runterschraubt wird der nicht mehr von der Graka gezeichnet, aber auch dann wird nicht jedes mal ne WM_PAINT Nachricht verschickt 😉



  • Aha, ok, wieder was dazugelernt. 💡 👍

    Allerdings verstehe ich das hier dann nicht:

    Florian_88 schrieb:

    so wird die Anzeige derzeit nur erneuert, wenn ich die Maus über das Fenster bewege.

    Denn wenn die Anzeige aktualisiert wird, heißt daß doch, daß die WM_PAINT angekommen ist... 😕



  • Elektronix schrieb:

    Denn wenn die Anzeige aktualisiert wird, heißt daß doch, daß die WM_PAINT angekommen ist... 😕

    WM_PAINT wird nicht gesendet, wenn man die mouse bewegt. WM_SETCURSOR und ein paar andere aber. hast du ein message-spy tool? (spy++ o.ä.) dann kannste es sehen...
    🙂



  • pale dog schrieb:

    WM_PAINT wird nicht gesendet, wenn man die mouse bewegt.

    Exakt. Denn wenn man die Maus bewegt, sorgt Windows selbst für das neuzeichnen an 'diesen kleinen Stellen'.


Anmelden zum Antworten