
Code : Tout sélectionner
InitSprite()
Procedure WindowCallback(WindowID, Message, wParam, lParam)
Result = #PB_ProcessPureBasicEvents;Result= DefWindowProc_(WindowID, Message, wParam, lParam)
;Debug Str(message)+" / "+Str(#WM_VSCROLL)
Select Message
Case #WM_VSCROLL; Gestion de la barre verticale
Debug "#WM_VSCROLL"
Debug WindowID
EndSelect
ProcedureReturn Result
EndProcedure
If OpenWindow(0,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget,"Window")
SetWindowCallback(@WindowCallback())
If CreateGadgetList(WindowID(0))
ScrollAreaGadget (1,10,10,200,200,500,400,10)
hCont = ContainerGadget(2,10,10,500,400,#PB_Container_Double)
CloseGadgetList()
If OpenWindowedScreen( hCont, 0, 0, 500, 400, 0, 0, 0 ) = 0
MessageRequester( "Erreur" , "Impossible d'ouvrir l'écran " , 0 )
End
EndIf
EndIf
If CreateSprite(1000,24,24)
StartDrawing(SpriteOutput(1000))
Box(0,0,24,24,RGB($0,$0,$FF))
StopDrawing()
EndIf
Dep = 8
Repeat
ClearScreen(0,155,255)
DisplaySprite(1000, x, 100)
x + Dep
If x >=300 Or x <=0 : Dep = -Dep : EndIf
FlipBuffers()
Until WindowEvent()=#PB_Event_CloseWindow
EndIf
Quand on manipule les barres de scroll, la zone ContainerGadget n’est rafraichie qu’en fin de manipulation produisant un affichage disgracieux mêlant saccades et scintillements.
Comment éviter cela pour obtenir un scrolling fluide ?
A la lumière de la série de messages suivante :
http://purebasic.hmt-forum.com/viewtopic.php?t=1462
l’idée etait de forcer le rafraichissement durant la manipulation en y glissant un RedrawWindow et autres UpdateWindow, mais rien de concluant en est sortie.(Rq: Pour ceux qui suivent : on sait déjà que rien n’est possible a ce sujet sur les messages #SB_PAGEDOWN et #SB_PAGEUP)
Quelqu’un a t’il une idée ?
... j’ai bien peur que la conclusion reste la meme: disposer de plus de souplesse sur ScrollAreaGadget.