Fenster Schütteln

Für allgemeine Fragen zur Programmierung mit PureBasic.
Andreas21
Beiträge: 390
Registriert: 30.08.2004 09:05
Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64
Wohnort: Heidelberg

Fenster Schütteln

Beitrag 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. :wink:
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag 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 
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Andreas21
Beiträge: 390
Registriert: 30.08.2004 09:05
Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64
Wohnort: Heidelberg

Beitrag von Andreas21 »

Jo genau so was meinte ich :-)

Aber darauf hette ich auch kommen können :oops:
Na ja das einfachste übersieht man meistens :allright:

Danke für den Tip <)
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

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

Beitrag von Kaeru Gaman »

:lol: klasse idee.... catch that window...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag 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 :mrgreen:

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

Beitrag von Kaeru Gaman »

....da hast du aber jetzt "geschummelt" :wink:

ist doch unmöglich, den button zu drücken.... du setzt ihn ja immer neben den mauszeiger... :cry:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag von Lars »

@Sunny
Dir ist aber klar, dass das Verschieben von Gadgets auch via
ResizeGadget() geht?
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Benutzeravatar
wichtel
Beiträge: 150
Registriert: 09.09.2004 08:35
Wohnort: Hattersheim

Beitrag von wichtel »

das erinnert mich an dieses hier:

mms://streamingmedia.cyso.nl/cyso.nl/Voting_Machine.wmv

Vor ein paar Tagen, in den USA....
PB / jaPBe jeweils aktuellste Version, seit 3.62 dabei, XP sp3 de/en & W7 en
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag 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_()
Antworten