Im Endeffekt heißt das hier aber nur das man damit einen genauen Wert bekommt und man detektieren kann ob eine Taste gehalten wird.
Noch etwas genauer:
GetAsyncKeyState
Return value
Type: SHORT
If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState. However, you should not rely on this last behavior; for more information, see the Remarks.
Also entweder man schreibt vorher ein GetAsyncKeyState und prüft danach noch mal mit GetAsyncKeyState, oder man macht einen Vergleich auf < 0.
Mittlerweile weiß ich, warum in meinem Code-Beispiel #WM_LBUTTONUP nicht abgefragt werden kann. Der Grund dafür ist die allererste Verzweigung, die dafür sorgt, daß der Code nach einem Mausklick nur genau einmal durchläuft. Also kann dann nicht #WM_LBUTTONUP abgefragt werden, denn nur #PB_Event_LeftClick öffnet ja dann wieder einen neuen Durchlauf. Na Hauptsache, es funktioniert nun doch noch.
@Mijikai
Deinen Code habe ich ausprobiert, Danke! So kann man das also auch machen, allerdings kann ich selber so nicht programmieren.
Danke nochmals an alle, guten Jahresausklang und bleibt gesund!
;...
Select event
Case #WM_LBUTTONDOWN
;...
If (wmx > 280 And wmx < 320) And (wmy > 250 And wmy < 290) And event = #WM_LBUTTONDOWN
;...
If (wmx > 330 And wmx < 370) And (wmy > 250 And wmy < 290) And event = #WM_LBUTTONDOWN
;....
If event = #WM_LBUTTONUP
schalt = 2
;...
aber das ist insgesamt furchtbar langsam und keine gute Praxis bei "Screen"-Anwendungen.
Daher gibt es z.B. diese PureBasic-Maus-Bibliothek.
Danke für deinen weiteren Tipp. Gestern war ich echt nicht gut in Form und nachträglich habe ich gesehen, daß ich hier versehentlich auch noch falsche Information gegeben hatte, denn direkt über dem kleinen Code-Abschnitt, den ich zuerst gezeigt hatte, ging #WM_LBUTTONUP auch nicht, sondern nur ganz außerhalb der später gezeigten Programmzeilen, Entschuldigung.
Das Tempo, mit dem ich klicken kann, ist aber gut, denn selbst wenn ich so schnell klicke wie ich kann, ist die Reaktion völlig flüssig.
Re42 hat geschrieben:Das Tempo, mit dem ich klicken kann, ist aber gut, denn selbst wenn ich so schnell klicke wie ich kann, ist die Reaktion völlig flüssig.
Dein Loop ist auch relativ schnell durch. (Dort passiert nicht viel spannendes)
Aber wenn immer nur am Anfang die Windows-Message geprüft wird (normales Windows-Message-Abfrage-Verhalten) ist das z.B. für Spiele untragbar.
Merke ich mir. An Spielen hatte ich allerdings nur mal ein Memory programmiert und da brauchte ich ja auch nicht viel Tempo. Aber gut zu wissen, Danke.