Verständnisproblem



  • http://www.c-plusplus.net/forum/viewtopic-var-t-is-123526-and-highlight-is-sound+abspielen.html
    Ich verstehe ein Teil dieses Programm nicht.
    Und zwar:
    Wie oft wird die Mausposition gesendet?
    Wenn es nur das beachten würde was "gemalt" wird, solange man die Maus gedrückt hält käme ja ab und an ein falsches ergebiss raus.

    Z.B. wenn man ein ) mahlt. Das Programm gibt ja (was auch richtig ist) 3(2?)1 aus.
    Die bewegung ist ja erst nach unten recht, nur nach unten und dann nach unten links.

    Würde man es aber so machen, dass solange die maus gedrückt ist 'alles offen ist' würde eine 2 rauskommen. Weil der 2te Punkt sich genau unterhalb von dem 1sten befindet. Also eine klare nur-nach-unten-bewegung.

    Wie wurde das also gemacht?



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum VCL (C++ Builder) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Mittels "if(dir != dirgesture)" im MouseMove-Event wird einfach abgefragt, ob sich die Bewegungsrichtung der Maus geändert hat und wenn ja, wird diese neue Bewegung zum AnsiString 'gesture' hinzugefügt.



  • Ist das nicht unsinn? Ich meine es würde auch reichen jede halbe Sekunde die aktuelle position zu übergeben.

    wird diese neue Bewegung zum AnsiString 'gesture' hinzugefügt.

    öhm, hinzugefügt oder überschrieben?



  • Du scheinst es wirklich nicht zu verstehen...

    Nur bei einer Änderung der Mausposition wird die Methode OnMouseMove aufgerufen. Und ein Timer macht da keinen Sinn, da diese Funktionalität unabhängig von der Geschwindigkeit der Mausbewegungen sein sollte.

    P.S: Es wird 'hinzugefügt', und erst beim Loslassen der rechten Maustaste (OnMouseUp) hat man den vollständigen Gesture-String.



  • danke für deine erklärung, Th.

    Die Variable, die immer die neuen werte der mausposi erhält - ist sie ein array oder wie kann sie so viele zahlen fassen (im code sehe ich kein array).



  • Nein, es wird immer nur die vorherige Mausposition gespeichert und zwar in der Variable 'movegesture', welche (was nicht dort aufgelistet wird, da die Header-Datei fehlt), vom Typ 'TPoint' (x, y) ist.
    Und wie in meinem ersten Posting beschrieben, reicht es die relative Mausposition zu vergleichen.

    Aber wenn du den Code ausprobierst, kannst du dir ja in OnMouseMove einige Testausgaben machen (damit ich nicht noch mehr hier erklären muß -).


Anmelden zum Antworten