Bei 3.30 funktioniert nicht als Flag und irgendwie selber coden weis ich nicht wie das geht, ich hoffe es klappt bei 4.00

Wenn du das Bild einem ImageGadget() zuweist, musst du deinem eigenen Programm über Windows vorgaukeln, dass ein event eintritt, welches Windows veranlasst, das ImageGadget() wiederherzustellen/neu zu zeichnen.Kaeru Gaman hat geschrieben:> Refresh für nen Image? Einfach alles mit Rec... ich meine Box() übermalen?! Entspricht einem FlipBuffers()
ne, eben nicht. technisch, auf pixelebene ja, aber nicht auf win-ebene,
das fenster muss noch gesagt bekommen, dass das Image sich verändert hat.
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Code: Alles auswählen
hwnd = OpenWindow(0,0,0,220,40,"")
CreateGadgetList(hwnd)
anim = CreateWindowEx_(0,"SysAnimate32","",#WS_CHILD|#WS_VISIBLE,10,10,120,16,hwnd,0,0,0)
SendMessage_(anim,#ACM_OPEN,0,"loading.avi")
SendMessage_(anim,#ACM_PLAY,-1,-1) ; Makelong(0,-1)
;SendMessage_(anim,#ACM_STOP,0,0)
Repeat
e = WaitWindowEvent()
Until e = #WM_CLOSE
Code: Alles auswählen
Procedure MyProgress(StripeX.l)
If IsImage(0) = 0
CreateImage(0,120,20)
EndIf
StartDrawing(ImageOutput(0))
Box(0,0,120,20,$FFFFFF)
Box(StripeX,5,60,10,$0000FF)
Box(StripeX-120,5,60,10,$0000FF)
For n=10 To 110 Step 10
Line(n,5,0,10,$FFFFFF)
Next
For n=0 To 4
Line(n,5,0,10,$FFFFFF)
Line(119-n,5,0,10,$FFFFFF)
Next
DrawingMode(4)
Box(2,2,116,16,$000000)
StopDrawing()
ProcedureReturn ImageID(0)
EndProcedure
OpenWindow(0,0,0,200,100,"Progressor",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))
ImageGadget(1,20,20,120,20,MyProgress(0))
Repeat
EventID = WaitWindowEvent(20)
If EventID = 0
StripeX + 2
If StripeX >= 120
StripeX = 0
EndIf
SetGadgetState(1, MyProgress(StripeX))
EndIf
Until EventID = #PB_Event_CloseWindow