Seite 2 von 3

Re: Animation trotz Fenster verschieben?

Verfasst: 18.11.2009 12:45
von X360 Andy
Rokur hat geschrieben: Mit welchem Fehler?
Bei mir läufts unter WinXP Prof 32 Bit PB 4.31 x86
Wahrscheinlich muss das Thread-Handling noch verbessert werden, hab das mal eben hingeklatscht um zu zeigen das es möglich ist, aber wie in der Hilfe schon steht passen DX und Threads nicht so gut zusammen, bzw. muss man dann sehr aufpassen. :wink:
Problem signature:
Problem Event Name: APPCRASH
Application Name: PureBasic_Compilation0.exe
Application Version: 0.0.0.0
Application Timestamp: 4b03d030
Fault Module Name: PureBasic_Compilation0.exe
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 4b03d030
Exception Code: c0000005
Exception Offset: 00003edb
OS Version: 6.1.7600.2.0.0.256.1
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789

Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid= ... cid=0x0409

If the online privacy statement is not available, please read our privacy statement offline:
C:\Windows\system32\en-US\erofflps.txt
EDIT
grad mal mit Debugger ...

Code: Alles auswählen

 wndMain = OpenWindow(#PB_Any, 0, 0, width, height, #app, #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
Gibt den Fehler aus :)

Mit Thread Safe
Crasht er hier

Code: Alles auswählen

   ClearScreen(0)
Mit der Meldung "Zeile 47: There is no open Screen"

Re: Animation trotz Fenster verschieben?

Verfasst: 18.11.2009 13:22
von ts-soft
Mit Timer siehts dann ungefähr so aus:

Code: Alles auswählen

; ****************
; Demo by KatSeiko
; ****************

; Erst mal initialiseren...
InitSprite()
; Fenster und Screen...
MainWindow = OpenWindow(#PB_Any, 0, 0, 800, 600, "Test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(MainWindow), 0, 0, 800, 600, 0, 0, 0)
; Ne Structure zur einfacheren Verwendung
Structure sLine
  X1.i
  X2.i
  Y1.i
  Y2.i
  C.i
EndStructure
; Hier kommen die Linien rein
Global Dim dLine.sLine(4)

; Prozeduren sind wiederverwendbar, die kann man immer gebrauchen
Procedure Randomize()
  ; dLine(0) = dLine(1)
  ; dLine(1) = dLine(2)
  ; dLine(2) = dLine(3)
  ; dLine(3) = dLine(4)
  RandomSeed(ElapsedMilliseconds())
  dLine(4)\x1 = Random(800)
  dLine(4)\x2 = Random(800)
  dLine(4)\y1 = Random(600)
  dLine(4)\y2 = Random(600)
  dLine(4)\C  = Random($FFFFFF)
EndProcedure

Procedure RandomScreen()
  ClearScreen(0)
  StartDrawing(ScreenOutput())
  For i = 0 To 4
    LineXY(dLine(i)\x1, dLine(i)\y1, dLine(i)\x2, dLine(i)\y2, dLine(i)\c)
  Next
  StopDrawing()
  FlipBuffers()
  Randomize()
EndProcedure


Procedure TimerCallback(hParent, uMsg, uEventID, dwTimer)
  If uEventID = 1
    RandomScreen()
  EndIf
EndProcedure

SetTimer_(WindowID(MainWindow), 1, 10, @TimerCallback())

; Dim füllen
For i = 0 To 4
  Randomize()
Next

; Programmschleife, Programm endet mit Fenster schließen.
Repeat
  WEvent = WaitWindowEvent()
Until WEvent = #PB_Event_CloseWindow
//edit
code korrigiert und neuformatiert

//edit2
timerintervall auf 10 ms gesetzt, würkt besser :twisted:

Re: Animation trotz Fenster verschieben?

Verfasst: 18.11.2009 14:08
von edel
dx ist es ziemlich egal in welchem thread es laeuft. Es darf dann aber auch nur in einem laufen.

Re: Animation trotz Fenster verschieben?

Verfasst: 18.11.2009 14:14
von Josh
@ts-soft
so gehts bei mir besser :P

Code: Alles auswählen

SetTimer_(WindowID(MainWindow), 1, 100, @TimerCallback())

Re: Animation trotz Fenster verschieben?

Verfasst: 18.11.2009 15:02
von ts-soft
Josh hat geschrieben:@ts-soft
so gehts bei mir besser :P

Code: Alles auswählen

SetTimer_(WindowID(MainWindow), 1, 100, @TimerCallback())
Du hast ja auch PB zur Verfügung :mrgreen:
Ich bin noch nicht zu Hause :wink:

Re: Animation trotz Fenster verschieben?

Verfasst: 18.11.2009 15:13
von Josh
ts-soft hat geschrieben:Du hast ja auch PB zur Verfügung :mrgreen:
Ich bin noch nicht zu Hause :wink:
hmpfff. ohne zu testen würd ich mich nicht traun, eine einzige zeile zu posten :cry:

Re: Animation trotz Fenster verschieben?

Verfasst: 18.11.2009 16:58
von ts-soft
Josh hat geschrieben:
ts-soft hat geschrieben:Du hast ja auch PB zur Verfügung :mrgreen:
Ich bin noch nicht zu Hause :wink:
hmpfff. ohne zu testen würd ich mich nicht traun, eine einzige zeile zu posten :cry:
Jetzt hab ichs getestet, korrigiert und es läuft wunderbar, ohne Thread!

Ohne Testen haue ich hier ja sonst auch nichts rein, habe aber gehofft das es dadurch weniger
Beispiele mit Threads gibt, die hierbei nicht notwendig und sehr gefährlich sind.

Gruß
Thomas

Re: Animation trotz Fenster verschieben?

Verfasst: 18.11.2009 17:38
von Kaeru Gaman

Code: Alles auswählen

  If uEventID = 1
:?:

Code: Alles auswählen

Debug #WM_TIMER
275
:?: :?:

zu deutsch: welches Event testest du da?

Re: Animation trotz Fenster verschieben?

Verfasst: 18.11.2009 17:45
von ts-soft
Da ich die Timerid auf 1 gesetzt haben, teste ich auch die 1

SetTimer_(WindowID(MainWindow), 1, 10, @TimerCallback())

#WM_TIMER interessiert in einem TimerCallback nicht, es wird ja nur dann aufgerufen :wink:

Re: Animation trotz Fenster verschieben?

Verfasst: 18.11.2009 18:12
von Kaeru Gaman
argkl Bild

uMsg ist das Event, gell?

... richtig lesen hätte geholfen.