Seite 1 von 2
Fenster Schütteln
Verfasst: 02.11.2004 17:27
von Andreas21
Hei,
Ist es möglich ein Fenster schüteln zu lassen?
Ich meine sowas wie z.b das in Yahoo möglich ist.

Verfasst: 02.11.2004 18:30
von Lukaso
Also, wenn ich das richtig verstanden habe, haste hier nen beispiel...:
Code: Alles auswählen
If OpenWindow(0, 100, 200, 195, 260, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget, "PureBasic Window")
SetTimer_(WindowID(0), 1, 50, 0)
Repeat
EventID.l = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
ElseIf EventID = #WM_TIMER
MoveWindow(WindowX()+2, WindowY()+2)
Delay(25)
MoveWindow(WindowX()-2, WindowY()-2)
EndIf
Until Quit = 1
EndIf
End
Verfasst: 17.11.2004 01:22
von Andreas21
Jo genau so was meinte ich
Aber darauf hette ich auch kommen können
Na ja das einfachste übersieht man meistens
Danke für den Tip

Verfasst: 17.11.2004 01:42
von Ynnus
Und wenn es sich völlig frei umherbewegen soll (zufällig versteht sich):
Code: Alles auswählen
If OpenWindow(0, 100, 200, 195, 260, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget, "PureBasic Window")
SetTimer_(WindowID(0), 1, 50, 0)
Repeat
EventID.l = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
quit = 1
ElseIf EventID = #WM_TIMER
If Random(1) = 1
MoveWindow(WindowX()+2, WindowY())
Else
MoveWindow(WindowX()-2, WindowY())
EndIf
If Random(1) = 1
MoveWindow(WindowX(), WindowY()+2)
Else
MoveWindow(WindowX(), WindowY()-2)
EndIf
Delay(25)
EndIf
Until quit = 1
EndIf
End
Wenn man es jetzt lange genug laufen lässt, könnte es sein dass es aus dem Sichtbereich rauswandert.^^
EDIT:
Wie wäre es mit einem Minispielchen? Wie lange benötigt man bis man das Fenster geschlossen hat? (Leider kann man hier leicht cheaten wenn man einfach den Tastmanager nimmt oder einfach unten in der Taskleiste auf Schließen klickt. Aber ohne muss man erstmal schön dem roten Knöpfchen hinterher rennen.^^)
Mein Rekord liegt bei ~ 2100 Milisekunden.^^
Code: Alles auswählen
If OpenWindow(0, Random(500), Random(500), 195, 260, #PB_Window_SystemMenu, "PureBasic Window")
SetTimer_(WindowID(0), 1, 50, 0)
time =ElapsedMilliseconds()
Repeat
EventID.l = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
quit = 1
ElseIf EventID = #WM_TIMER
If Random(1) = 1
MoveWindow(WindowX()+25, WindowY())
Else
MoveWindow(WindowX()-25, WindowY())
EndIf
If Random(1) = 1
MoveWindow(WindowX(), WindowY()+25)
Else
MoveWindow(WindowX(), WindowY()-25)
EndIf
Delay(25)
EndIf
Until quit = 1
EndIf
MessageRequester("time", "Du hast " + Str(ElapsedMilliseconds() - time) + " Millisekunden benötigt zum Schließen des Fensters." )
End
Verfasst: 17.11.2004 02:24
von Kaeru Gaman

klasse idee.... catch that window...
Verfasst: 17.11.2004 02:55
von Ynnus
MoveWindow_() funktioniert auch mit Gadgets (wie sehr viele andere WinAPI Befehle wo man eine FensterID angeben kann, kann man auch GadgetIDs angeben und es gilt auch für diese).
Wer schafft es, denn Button zu drücken?
Ach ja, per "Tab" den Focus auf den Button legen geht nicht, da hab ich vorgesorgt und den Focus immer auf das Fenster gelegt.
Wir wollen ja nicht schummeln
Code: Alles auswählen
If OpenWindow(0, Random(500), Random(500), 450, 100, #PB_Window_SystemMenu, "PureBasic Window")
CreateGadgetList(WindowID(0))
ButtonGadget(0, 225 - 30, 40, 60, 60, "Button")
SetTimer_(WindowID(0), 1, 50, 0)
Repeat
SetFocus_(WindowID(0))
If WindowMouseX() >= GadgetX(0) - 2 And WindowMouseX() <= GadgetX(0) + GadgetWidth(0) - 2 And WindowMouseY() >= GadgetY(0) - 2 And WindowMouseY() <= GadgetY(0) + GadgetHeight(0) + 2
If WindowMouseX() <= GadgetX(0) + (GadgetWidth(0) / 2)
MoveWindow_(GadgetID(0), WindowMouseX() + 2, 40, 60, 60, #True)
Else
MoveWindow_(GadgetID(0), WindowMouseX() - GadgetWidth(0) - 2, 40, 60, 60, #True)
EndIf
If GadgetX(0) >= 390 Or GadgetX(0) <= 0
MoveWindow_(GadgetID(0), 225 - (GadgetWidth(0) / 2), 40, 60, 60, #True)
EndIf
EndIf
EventID.l = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
quit = 1
EndIf
until quit = 1
endIf
End
Verfasst: 17.11.2004 03:10
von Kaeru Gaman
....da hast du aber jetzt "geschummelt"
ist doch unmöglich, den button zu drücken.... du setzt ihn ja immer neben den mauszeiger...

Verfasst: 17.11.2004 18:07
von Lars
@Sunny
Dir ist aber klar, dass das Verschieben von Gadgets auch via
ResizeGadget() geht?
Verfasst: 17.11.2004 18:10
von wichtel
das erinnert mich an dieses hier:
mms://streamingmedia.cyso.nl/cyso.nl/Voting_Machine.wmv
Vor ein paar Tagen, in den USA....
Verfasst: 17.11.2004 18:23
von Ynnus
Lars hat geschrieben:@Sunny
Dir ist aber klar, dass das Verschieben von Gadgets auch via
ResizeGadget() geht?
*Hust*,öhm, ich wollts per API machen, um zu demonstrieren, dass viele Fenster-Befehle auch auf Gadgets anwendbar sind... *hust*
Naja, ich hab resizegadget() bisher kaum verwendet, da ist es mir wohl entfallen, dass das so auch geht. Macht aber nix, in meinem Beispiel passt es ja so zu dem genutzten API-Befehl MoveWindow_()