Re: Flackerndes Text-Gadget
Verfasst: 05.08.2014 13:25
Klasse - kein Flackern mehr!
Vielen Dank!

Code: Alles auswählen
Declare TimerCallBack(hWnd,Msg,wParam,lParam)
Font12b.l = LoadFont(#PB_Any, "Arial", 12, #PB_Font_Bold)
#window = 0
#text = 0
OpenWindow(#window, 0, 0, 200, 100, "es flackert", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
TextGadget(#text, 30, 40, 140, 30, "", #SS_CENTERIMAGE|#SS_CENTER|#SS_SUNKEN) ;<-- der Rahmen muß sein
SetGadgetFont(#text, FontID(Font12b))
SetTimer_(WindowID(#window), 77, 500, @TimerCallBack()) ;Wiederholzeit=500 ms; Identifier=77
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Procedure TimerCallBack(hWnd,Msg,wParam,lParam)
Static i
i = i + 1
Select Msg
Case #WM_TIMER
If wparam = 77
SendMessage_(GadgetID(#text), #WM_SETREDRAW, #False, 0)
SetGadgetText(#text, Str(i) + ". Durchlauf")
SendMessage_(GadgetID(#text), #WM_SETREDRAW, #True, 0)
InvalidateRect_(GadgetID(#text), 0, #False)
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Code: Alles auswählen
Declare TimerCallBack(hWnd,Msg,wParam,lParam)
Global Font12b = LoadFont(#PB_Any, "Arial", 12, #PB_Font_Bold)
#window = 0
#text = 0
OpenWindow(#window, 0, 0, 200, 100, "es flackert", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CanvasGadget(#text, 30, 40, 140, 30, #PB_Canvas_Border)
SetTimer_(WindowID(#window), 77, 500, @TimerCallBack()) ;Wiederholzeit=500 ms; Identifier=77
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Procedure TimerCallBack(hWnd,Msg,wParam,lParam)
Static i
i = i + 1
Select Msg
Case #WM_TIMER
If wparam = 77
If StartDrawing(CanvasOutput(#text))
Box(0,0,140,30, #Yellow) ; and a green box
DrawingFont(FontID(Font12b))
DrawingMode(#PB_2DDrawing_Transparent)
FrontColor(#Black)
DrawText(10,5,Str(i) + ". Durchlauf")
StopDrawing()
EndIf
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Code: Alles auswählen
Declare TimerCallBack()
Font12b.i = LoadFont(#PB_Any, "Arial", 12, #PB_Font_Bold)
#window = 0
#text = 0
#text1 = 1
#Dummy = 2
OpenWindow(#window, 0, 0, 200, 100, "es flackert nicht", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
TextGadget(#text, 10, 40, 180, 20, "")
SetGadgetFont(#text, FontID(Font12b))
TextGadget(#text1, 10, 60, 180, 20, "")
SetGadgetFont(#text1, FontID(Font12b))
TextGadget(#Dummy, 0, 0, 1, 1, "")
AddWindowTimer(#window, 77, 500)
BindEvent(#PB_Event_Timer, @TimerCallBack(), #window, 77)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Procedure TimerCallBack()
Static i
i = i + 1
SetGadgetText(#Dummy, "")
SetGadgetText(#text, Str(i) + ". Durchlauf")
SetGadgetText(#text1, Str(i+1) + ". Durchlauf + 1")
EndProcedure
CoolHelle hat geschrieben: Habe ich so gemacht in der Vor-Canvas-Zeit.
Was ist da jetzt der Trick? Du setzt ein Gadget an 0,0 mit der Größe 1,1 und setzt dann immer wieder diesen GadgetText auf "",Helle hat geschrieben:Habe ich so gemacht in der Vor-Canvas-Zeit.
Ich habe das gefühl wenn er es so macht wird das Fenster Refresht, aber da er durch den null String nichts ändert Flackert das fenster nichtWas ist da jetzt der Trick? Du setzt ein Gadget an 0,0 mit der Größe 1,1 und setzt dann immer wieder diesen GadgetText auf "",
mit dem Resultat das die anderen Gadgets nicht flackern?
Macht irgendwie keinen Sinn für mich