ButtonDown auf touchscreen???
-
also ne NAchricht gedrückt halteb gibt es nicht. Das geht nzr über BUttond down/up den ZEitintervall dazwischen zu bestimmen
-
Ich denke mal du brauchst einen Timer.
-
Also die Schleife hab ich rausgemacht, da mit der gar nichts mehr funktioniert hat.
OnLButton Down und OnLButtonUp hab ich schon eingebaut aber dann wußte ich nicht mehr weiter.
ich habe 4 Button 2 zum erhöhen und 2 zum dekrementieren.
bei OnLbutton... hab ich ja ein Flag (linke Tast, trechte Tast mit shift usw.) und nen point, der die Position absolut vom Ursprung angibt->point.x point.y
Wie frag ich da die 4 Buttons ab? Da brauch ich ja die geom. Ortsdaten, oder?
-
GetWindowPos
PtInRect
(ScreenToClient)...damit solltest du etwas weiter kommen.
-
Ich verstehe nicht ganz die Frage. Jeder Button generiert doch ein eigene "OnLButtonDown"-Nachricht
-
RR schrieb:
Ich verstehe nicht ganz die Frage. Jeder Button generiert doch ein eigene "OnLButtonDown"-Nachricht
Und da das Problem mit der Nachricht nicht lösbar ist, versucht man es eben anders.
-
Ich glaub nicht das jeder Button seine eigene OnLButtonblabla Funktion hat.
Die Funktion ist allgemein für alle Buttons oder Kontroll ID gültig.
Bin mir aber nicht sicher, bzw. ich hab so etwas nicht gefunden.
-
Anders ist es natürlich schwerer. Aber durch einen Timer, indem die Koordinaten mit den oben genannten Funktionen abgefragt werden müßte es möglich sein. Ein Thread könnte diese Aufgabe auch erledigen.
-
monne81 schrieb:
Ich glaub nicht das jeder Button seine eigene OnLButtonblabla Funktion hat.
Wenn das beim Embedded nicht total anders gelöst ist, hat jeder Button seine EIGENE OnBtnDingsda.
Nur die LButtonDown usw, die gehen an den Dialog.
-
Wie kann ich denn die Kordinaten eines Buttons bzw. eines Kontroll IDs abfragen ?
GetWindowPos gibt es nicht!
-
Sind die Buttons eigene Fenster oder nur gezeichnete Elemente?
-
Starte do bei ButtonDown einen Thread der in einer Schleife deine Variable setzt und das so lange wie kein ButtonUp kommt. Denn ButtonUp beendet den Thread.
Pseudocode:
BOOL EndeThread; Thread { while(EndeThread == FALSE) { //Variable setzen und ne Pause einfügen } } ButtonDown { EndeThread = False; Starte Thread; } ButtonUp { EndeThread = True; }
Mein Vorschlag dazu, so zur Diskusion, gibt sicherlich noch andere Möglichkeiten. ZB: Anstatt des Threads einen Timer zu benutzen, mußt diesen mur starten und beenden.
Gruß
-
Sorry, GetWindowRect muss es heißen.
Dafür brauchst du nen Zeiger (CWnd) auf den Button.
-
@RR sind im Dialog editor gezeichnete Buttons also gezeichnete Elemente!
@estartu:
im Class Wizard gibt es nur die OnBeenClicked und Doubleclicked Message,
die OnLButtoDown ist für den ganzen Dialog, oder suche ich da an der falschen Stelle?
-
monne81 schrieb:
Wie kann ich denn die Kordinaten eines Buttons bzw. eines Kontroll IDs abfragen ?
GetWindowPos gibt es nicht!Versuch's mal mit GetWindowRect().
-
Nachtrag: Du kannst auch mit ChildWindowFromPoint(pos) bestimmen, auf welches Dialog-Element gedrückt wurde.
-
gezeichnete Elemente generieren kein eigene "OnLButtonDown"-Nachricht, man muß die Koordinaten durch "GetWindowPos" abfragen und dann die Point-Koordinaten mit "PtInRect" überprüfen. Dafür muß natürlich das RECT der Elemete bekannt sein. Gegebenfalls müßen die Koordinaten durch "ScreenRectToClientRect" transformiert werden.
Wenn die Elemete dreieckig sind wird alles komplizierter.
-
Ja mit getWindowRect frage ich aber nur die Koo des Windows ab, nicht die eines ContolItems!!!
-
Entschuldigung, natürlich "GetCursorPos" und nicht "GetWindowPos"
-
Monne, lies nochmal ganz ruhig Seite 2 dieses Beitrags. Ich glaube du hast ein paar Zeilen überlesen.