Mausklick-Abfrage

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

Mausklick-Abfrage

Beitrag 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???
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ich wollte mal wissen, ob dein Fragezeichen klemmt?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

Beitrag 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?
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

@Sunny: Das sind beides identische Codes.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

Beitrag 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?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

Beitrag von Sunny »

Hmm...
Das Funktioniert seltsamerweise.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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 
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

Beitrag von Sunny »

Ok, ich hab zwar keine Ahnung, warum das so sein muss aber es funktionert...

Vielen Dank
Antworten