Seite 1 von 2

mouseklick mit window

Verfasst: 26.03.2010 21:33
von parzival
hi,
ich komm nicht weiter.
ich hab ein windowedscreen erstellt und brauch ich einen mausklick, eher gesagt muss ein bild angeklickt werden. mit MouseX() gehts nicht weil ich sonst die maus nicht sehe, also muss ich auf windowmousex() zurückgreifen, nur wie soll ich da den mausklick bewerkstelligen?? einen befehl dafür hab ich nicht gesehen.
mfg
parzival

Re: mouseklick mit window

Verfasst: 26.03.2010 21:42
von ts-soft
Wenn es nur für Windows ist, könnte folgender Code helfen:

Code: Alles auswählen

SetCursorPos_(x, y)
mouse_event_(#MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
mouse_event_(#MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

Re: mouseklick mit window

Verfasst: 26.03.2010 21:55
von parzival
uf, da blick ich garnicht durch :D
also hier ist mal mein code:
(sprite schon geladen und in der hauptschleife!)

Code: Alles auswählen

If WindowMouseX(0) > 100 And WindowMouseX(0) < 310 And WindowMouseY(0) > 110 And WindowMouseY(0) < 150 
        ;hier sollte es dann weitergehen!
      EndIf
wie würde man hier jetzt einen mouseklick reinbringen?

Re: mouseklick mit window

Verfasst: 26.03.2010 21:58
von Schlumpf
also, wenn du nen screen hast, musst du deinen mauszeiger selber anzeigen.
das ist der übliche und einfachste weg.

sonst lässt du InitMouse() und ExamineMouse() komplett weg.
dann kannst du die Maustaste über GetAsyncKeystate_(#VK_LBUTTON) checken.

gibbet auch alte beispiele im forum...
http://www.purebasic.fr/german/viewtopic.php?t=11280

Re: mouseklick mit window

Verfasst: 26.03.2010 22:07
von ts-soft
parzival hat geschrieben:uf, da blick ich garnicht durch :D
also hier ist mal mein code:
(sprite schon geladen und in der hauptschleife!)

Code: Alles auswählen

If WindowMouseX(0) > 100 And WindowMouseX(0) < 310 And WindowMouseY(0) > 110 And WindowMouseY(0) < 150 
        ;hier sollte es dann weitergehen!
      EndIf
wie würde man hier jetzt einen mouseklick reinbringen?

Code: Alles auswählen

SetCursorPos_(101, 111)
mouse_event_(#MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
mouse_event_(#MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) 

Re: mouseklick mit window

Verfasst: 27.03.2010 00:42
von captain_hesse
Es geht auch ohne API

Code: Alles auswählen

InitSprite()
OpenWindow(0,0,0,320,200,"klick")
OpenWindowedScreen(WindowID(0),0,0,320,200,0,0,0)
text$="In den Screen klicken zum beenden"
Repeat
event=WindowEvent()

If event=#WM_LBUTTONDOWN   
;Dein Code, Break steht jetzt nur als Beispiel da.
 Break 
EndIf

StartDrawing(ScreenOutput())
DrawText(10,90,text$)
StopDrawing()
FlipBuffers()
ForEver
CloseScreen()
CloseWindow(0)
End
Wenn ich das richtig verstanden hab sollte dir das helfen.

Re: mouseklick mit window

Verfasst: 27.03.2010 00:54
von ts-soft
captain_hesse hat geschrieben:Es geht auch ohne API

Code: Alles auswählen

If event=#WM_LBUTTONDOWN 
Soso, ohne API :lol:

@parzival
Mein Code kannste übrigens vergessen, hab die Frage mißverstanden,
meiner Simuliert den Mausklick, die willst ihn aber abfragen. Naja,
schlecht ausgedrückt die Frage.

Gruß
Thomas

Re: mouseklick mit window

Verfasst: 27.03.2010 01:00
von captain_hesse
UPS :oops:

Aber trotzdem es ist ja nur die Konstante, der Rest ist PB.

Re: mouseklick mit window

Verfasst: 27.03.2010 01:04
von ts-soft
captain_hesse hat geschrieben:UPS :oops:

Aber trotzdem es ist ja nur die Konstante, der Rest ist PB.
Aber die Konstante und das Event sind Windows-Spezifisch, also
läuft es nur mit der Vollversion unter Windows.

Diese feinen Unterschiede sind für Crossplattform-Programmierung
schon wichtig :wink:

Re: mouseklick mit window

Verfasst: 27.03.2010 01:16
von captain_hesse
Aber die Konstante und das Event sind Windows-Spezifisch, also
läuft es nur mit der Vollversion unter Windows.
Davon ging ich auch aus, also PB-Vollversion und MS-Windows.

Ansonsten hast du natürlich vollkommen recht. Obwohl ich mir garnicht so sicher bin das es mit der Demo unter Windows nicht klappen würde wenn man den Wert der Konstante kennt.