Bei 3.30 funktioniert nicht als Flag und irgendwie selber coden weis ich nicht wie das geht, ich hoffe es klappt bei 4.00
Progressgadget wie beim Booten
Noe , da auch nicht. Musst schon selber einbauen. Sollte auch mit 3.30 funktionieren.
Informationen zur Progressbar findest du ueber Google
( http://www.google.com/codesearch ist sehr gut dafuer geeignet
)
oder direkt bei Microsoft auf MSDN ( http://windowssdk.msdn.microsoft.com/en ... 70343.aspx )
Hier noch der Link fuer das AnimationsControl
http://windowssdk.msdn.microsoft.com/en ... 73600.aspx
Damit kannst du simple Avidateien abspielen lassen.
ts-soft hatte da auch mal was fuer 'CreateGadget' (ab V4.0) gebastelt,
damit ist das abspielen solcher Animationen ein Kinderspiel.
Informationen zur Progressbar findest du ueber Google
( http://www.google.com/codesearch ist sehr gut dafuer geeignet
oder direkt bei Microsoft auf MSDN ( http://windowssdk.msdn.microsoft.com/en ... 70343.aspx )
Hier noch der Link fuer das AnimationsControl
http://windowssdk.msdn.microsoft.com/en ... 73600.aspx
Damit kannst du simple Avidateien abspielen lassen.
ts-soft hatte da auch mal was fuer 'CreateGadget' (ab V4.0) gebastelt,
damit ist das abspielen solcher Animationen ein Kinderspiel.
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.
Keine Ahnung, welche Ereignisse das sind, aber z. B. das Wiederherstellungsereignis: Gaukel deinem Fenster vor, es sei minimiert und danach wiederhergestellt bzw. maximiert worden! Oder versuchs mal mit UpdateWindow_() oder InvalidateRect(0, 0, 0). Sonst wüsst ich nichts... Außer, das Image mit SetGadgetState() erneut dem ImageGadget() zuzuweisen!
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy EndHier noch ein kleines Beispiel mit einem AnimationsControl.
Beispiel :
Beispiel :
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
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
@edel
geht das animationscontrol auch auf 2k? der XP-progressbar wohl kaum.
auch wenns geht, ein AVI braucht man dafür auf jeden fall.
...dann erklär RSB mal, wie er sichn AVI selber macht...
außerdem, was spricht gegen selberzeichnen?
geht das animationscontrol auch auf 2k? der XP-progressbar wohl kaum.
auch wenns geht, ein AVI braucht man dafür auf jeden fall.
...dann erklär RSB mal, wie er sichn AVI selber macht...
außerdem, was spricht gegen selberzeichnen?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- HeX0R
- Beiträge: 3055
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Mit einem simplen SetGadgetState() wird das Pic im Gadget erneuert:
Allerdings wäre hier ein Timer zu bevorzugen.
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
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
@HeXOR
ich habe mit absicht mit zwei images gearbeitet,
nämlich um einem möglichen flackern vorzubeugen.
[edit2]
ist aber wohl unnötig, wenn das bild erst nach dem zeichnen aktualisiert wird.
SetGadgetState... mist.. hätt ich auch selber drauf kommen können...
...ich mach halt viel zu selten was mit Fensterl....
also danke fürs lösung finden.
[edit]
weitergegebenes empfangen.
ich habe mit absicht mit zwei images gearbeitet,
nämlich um einem möglichen flackern vorzubeugen.
[edit2]
ist aber wohl unnötig, wenn das bild erst nach dem zeichnen aktualisiert wird.
SetGadgetState... mist.. hätt ich auch selber drauf kommen können...
...ich mach halt viel zu selten was mit Fensterl....
also danke fürs lösung finden.
[edit]
weitergegebenes empfangen.
Zuletzt geändert von Kaeru Gaman am 10.10.2006 10:32, insgesamt 4-mal geändert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.

