[PB 5.30] ResizeGadget : Changement de fonctionnement

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

[PB 5.30] ResizeGadget : Changement de fonctionnement

Message par falsam »

Le mode de fonctionnement de ResizeGadget() change.

■ 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
■ Pour obtenir un redimensionnement ou un repositionnement des gadgets en temps reel, il faut passer par la fonction BindEvent() avec un appel à une procédure.

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
Et non ce n'est pas un bug :)
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.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: [PB 5.30] ResizeGadget : Changement de fonctionnement

Message par nico »

C'est super cette initiative, de faire des exemples sur les nouveautés et les changements, on le voit beaucoup sur le Forum allemand.

Tu pourrais tout regrouper peut être ?
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [PB 5.30] ResizeGadget : Changement de fonctionnement

Message par falsam »

@Nico : Je découvre au fur et à mesure ces très nombreux changements. Difficile de les regrouper quoi que je pourrais mettre mes découvertes dans Information et tutoriaux. Après tout c'est bien une information.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: [PB 5.30] ResizeGadget : Changement de fonctionnement

Message par graph100 »

Si je comprend bien, la procédure liée à l'event #PB_Event_SizeWindow est appelée plus souvent que si on détecte l'event dans la boucle ?

Merci pour l'exemple :D
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: [PB 5.30] ResizeGadget : Changement de fonctionnement

Message par Anonyme2 »

Excellent ces petits exemples.
A mettre dans la doc si possible avant que ça ne parte aux oubliettes.

Merci falsam. :D
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [PB 5.30] ResizeGadget : Changement de fonctionnement

Message par Ar-S »

Merci Falsam, +1 pour l'ajouter dans la doc.
J'ai toujours du mal avec les bindevent, c'est pourtant très pratique et même assez lisible dans le code mais les vieilles habitudes sont tenaces. :)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre