■ Le positionnement ou redimensionnement des gadgets se fait une fois que le redimensionnement de la fenêtre est terminée afin d'éviter les effets de flickering.
Code : Tout sélectionner
Enumeration
#Mainform
#Button
EndEnumeration
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget, Event
OpenWindow(#Mainform, 0, 0, 500, 400, "Window Resize", WindowStyle)
ButtonGadget(#Button, 400, 30, 80, 24, "My Button")
Repeat
Event = WaitWindowEvent(10)
Select Event
Case #PB_Event_Gadget
Select GEvent
EndSelect
Case #PB_Event_CloseWindow
End
Case #PB_Event_SizeWindow
ResizeGadget(#Button, WindowWidth(#Mainform)-100, #PB_Ignore, #PB_Ignore, #PB_Ignore)
EndSelect
ForEver
Code : Tout sélectionner
Enumeration
#Mainform
#Button
EndEnumeration
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget, Event
Procedure OnResize()
ResizeGadget(#Button, WindowWidth(#Mainform)-100, #PB_Ignore, #PB_Ignore, #PB_Ignore)
EndProcedure
OpenWindow(#Mainform, 0, 0, 500, 400, "Window Resize", WindowStyle)
ButtonGadget(#Button, 400, 30, 80, 24, "My Button")
BindEvent(#PB_Event_SizeWindow, @OnResize(), #Mainform)
Repeat
Event = WaitWindowEvent(10)
Select Event
Case #PB_Event_Gadget
Select GEvent
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
The #PB_Event_SizeWindow and #PB_Event_MoveWindow events are no longer reported in realtime in the main event loop. This is to reduce problems with flickering on resize. To get realtime events you have to use the BindEvent() function and a callback in the future.