Seite 1 von 2
Mausklick-Abfrage
Verfasst: 06.03.2009 15:13
von Sunny
Ich mal wieder...
Ich wollte mal wissen, mit welchem befehl man abfragt, ob eine Maustaste gedrückt wurde??? Aber ohne dafür nen Screen oder nen WindowedScreen öffnen zu müssen???
Verfasst: 06.03.2009 15:15
von Kaeru Gaman
ich wollte mal wissen, ob dein Fragezeichen klemmt?
Verfasst: 06.03.2009 15:21
von Kaeru Gaman
also, ernsthafte Antwort:
du kannst innerhalb deiner Eventverarbeitung den Eventtype prüfen,
auf Gadgets die das unterstützen.
http://www.purebasic.com/german/documen ... ttype.html
oder
über Win-API kannst du den Virtual Key für die Maustaste abfragen,
das ist dann Gadgetunabhängig, aber auch Fensterübergreifend.
GetAsyncKeyState_(#VK_LBUTTON)
Verfasst: 09.03.2009 01:32
von Sunny
OK, Danke für die Antwort, das mit WinAPI sieht schonmal ganz gut aus, aber eins versteh ich nicht:
Code: Alles auswählen
Repeat
Delay(10)
Until GetAsyncKeyState_(#VK_LBUTTON)
End
Wieso endet das Programm automatisch nach dem Start, wobei dieses Programm
Code: Alles auswählen
Repeat
Delay(10)
Until GetAsyncKeyState_(#VK_LBUTTON)
End
erst endet, nachdem ich die Esc-Taste drücke?
Verfasst: 09.03.2009 01:38
von Kiffi
@Sunny: Das sind beides identische Codes.
Grüße ... Kiffi
Verfasst: 09.03.2009 04:18
von Sunny
Verzeihung, mein Fehler...
Hier nochmal die Codes (jetzt aber richtig):
Also Dieser Code hier funktioniert nicht, wenn ich die linke Maustaste drücke:
Code: Alles auswählen
Repeat
Delay(10)
Until GetAsyncKeyState_(#VK_LBUTTON)
End
Dieser Code hier allerdings Funktioniert, wenn ich die Escapetaste drücke:
Code: Alles auswählen
Repeat
Delay(10)
Until GetAsyncKeyState_(#VK_ESCAPE)
End
Woran liegt das?
Verfasst: 09.03.2009 04:20
von Kaeru Gaman
keine Ahnung, was du da verbuchselt hast...
probier mal sowas:
Code: Alles auswählen
CreateImage(0,16,16)
StartDrawing(ImageOutput(0))
Line( 0, 0, 16, 16,$00FFFF)
Line( 0, 16, 16,-16,$00FFFF)
StopDrawing()
OpenWindow(0, #PB_Ignore,0, 400,300,"Bla")
ImageGadget(0,16,16,16,16,ImageID(0))
Repeat
Event = WaitWindowEvent()
If GetAsyncKeyState_(#VK_LBUTTON)
ResizeGadget(0,WindowMouseX(0),WindowMouseY(0),#PB_Ignore,#PB_Ignore)
EndIf
Until Event = #PB_Event_CloseWindow
Verfasst: 09.03.2009 04:48
von Sunny
Hmm...
Das Funktioniert seltsamerweise.
Verfasst: 09.03.2009 05:46
von Kaeru Gaman
nein, das funktioniert logischerweise...
> Also Dieser Code hier funktioniert nicht, wenn ich die linke Maustaste drücke:
da scheint noch was in der queue zu hängen, frag mich nicht wieso...
so gehts:
Code: Alles auswählen
GetAsyncKeyState_(#VK_LBUTTON)
Repeat
Delay(10)
Until GetAsyncKeyState_(#VK_LBUTTON)
End
Verfasst: 09.03.2009 16:06
von Sunny
Ok, ich hab zwar keine Ahnung, warum das so sein muss aber es funktionert...
Vielen Dank