Code : Tout sélectionner
; *************************************************************************************************************************
; ************************************** ANIME FENETRE V2 *******************************************************
; *************************************************************************************************************************
; *************************************************************************************************************************
; *************************************************************************************************************************
; explication :
; il y a quelques temps 1 ou 2 ans !!!! (pour les nouveau qui saurai pas : D )
; j'avais commencé une serie de fonctions pour animer les fenetres a la fermeture de celle-ci !
; Le Soldat inconu avait fait une version interessante .. (qu'est devenu ce travail ?? )
; je me suis aperçut que sur Code Archive quelqu'un avait fait un truc equivalent !
; je ne saurai dire qui a été le premier a y penser !! : D
; peut importe ! (mais je crois bien que c'est MOA !! Smile ..... comme toujours ! Very Happy )
; j'ai donc repris Mon code (le miens a MOA !! : D) , pour ajouter des effets de fermeture
; grace au code que le Soldat inconu avait publié sur les fenetres bizard (ronde triangulaire ect ...)
; je me suis servi en grande partie du code permettant de faire un trou dans une fenetre
; du coup plein d'effets nouveaux, et surtout maintenant des effets d'apparition de fenetre
;ce sont 2 procedures facilement transformable en librairie
; la procedure d'ouverture de fenetre
; -------------------------------------------------
; ouvre_win(#Fenetre,x,y,largeur_fenetre,hauteur_fenetre,options,titre$,mode_d'apparition$ )
; la procedure de fermeture de fenetre
; ----------------------------------------------------
; ferme_win(#Fenetre,mode de disparition$)
; ps: Les Modes d'apparition et de Disparition sont listé plus bas !
; *************************************************************************************************************************
; *************************************************************************************************************************
; *************************************************************************************************************************
; *************************************************************************************************************************
; *************************************************************************************************************************
; voici un exemple simple d'utilisation :
Declare ferme_win(num_fenetre,type.s)
Declare ouvre_win(num_fenetre,x,y,larg,haut,Options,titre$,type.s)
Enumeration
#Fenetre
#Button_OK
#Text_0
EndEnumeration
; ******** on ouvre une fenetre a l'aide de ma procedure ***********
ouvre_win( #Fenetre , 321, 217, 257,300, #PB_Window_SystemMenu,"dobro presente" , "apparait_trou_4" )
; *******************************************
; **** on dessine les gadget dedans ****
If CreateGadgetList ( WindowID (#Fenetre))
ButtonGadget ( #Button_OK , 102, 200, 66, 33, "ha ben ouaip ! " )
TextGadget ( #Text_0 , 35, 15, 132, 180, "voici les fenetres animée" + Chr (10)+ "essayez de quitter avec le bouton" + Chr (10)+ "ou la croix rouge" + Chr (10)+ "2 effets differents" + Chr (10)+ " apreciez les effets en vous mettant sur le bureau ! " )
SetGadgetFont ( #Text_0 , FontID1)
EndIf
; *******************************************
; ********* la boucle principale **********
Repeat
Event= WaitWindowEvent ()
; ********** y a t'il des gadgets ? ****
If Event = #PB_Event_Gadget ; ok on gere !
GadgetID = EventGadget()
If GadgetID = #Button_OK
ferme_win( #Fenetre , "trou_2" ) ; voici la fonction qui fait partir la fenetre !
End
EndIf
EndIf
; ****************************************
Until Event=#PB_Event_CloseWindow ; on ferme la fenetre avec la croix rouge ?
ferme_win( #Fenetre , "go_droite" ) ; voici la fonction qui fait partir la fenetre avec un effet different !
; *******************************
; voici les modes de d'apparition de fenetres
; ------------------------------------------------------
; ************************************************************************************************
;ouvre_win(#Fenetre,321, 217, 257, 200,#PB_Window_SystemMenu,"hello","apparait_1" )
;ouvre_win(#Fenetre,321, 217, 257, 200,#PB_Window_SystemMenu,"hello","apparait_bas_droite" )
;ouvre_win(#Fenetre,321, 217, 257, 200,#PB_Window_SystemMenu,"hello","apparait_droite")
;ouvre_win(#Fenetre,321, 217, 257, 200,#PB_Window_SystemMenu,"hello","apparait_bas")
;ouvre_win(#Fenetre,321, 217, 257, 200,#PB_Window_SystemMenu,"hello","apparait_trou")
;ouvre_win(#Fenetre1,321, 217, 257, 200,#PB_Window_SystemMenu,"hello","apparait_trou_2")
;ouvre_win(#Fenetre,321, 217, 257, 200,#PB_Window_SystemMenu,"hello","apparait_trou_3")
;ouvre_win(#Fenetre,321, 217, 257, 200,#PB_Window_SystemMenu,"hello","apparait_trou_4")
;ouvre_win(#Fenetre,321, 217, 257, 200,#PB_Window_SystemMenu,"hello","apparait_trou_5")
; ************************************************************************************************
; voici les modes de disparition de fenetre
; -------------------------------------------------------------
;ferme_win(#Fenetre,"larg")
;ferme_win(#Fenetre,"haut")
;ferme_win(#Fenetre,"elast")
;ferme_win(#Fenetre,"elast2")
;ferme_win(#Fenetre,"go_gauche")
;ferme_win(#Fenetre,"go_droite")
;ferme_win(#Fenetre,"go_haut")
;ferme_win(#Fenetre,"go_bas")
;ferme_win(#Fenetre,"trou_1")
;ferme_win(#Fenetre,"trou_2")
;ferme_win(#Fenetre,"trou_3")
;ferme_win(#Fenetre,"trou_4")
;ferme_win(#Fenetre,"trou_5")
;ferme_win(#Fenetre,"trou_6")
;ferme_win(#Fenetre,"trou_7")
;ferme_win(#Fenetre,"trou_8")
;ferme_win(#Fenetre,"trou_9")
;ferme_win(#Fenetre,"trou_10")
;ferme_win(#Fenetre,"test")
Procedure ferme_win(num_fenetre,type.s)
WindowID = WindowID (num_fenetre)
;UseWindow(num_fenetre)
winx = WindowX (num_fenetre)
winy = WindowY (num_fenetre)
winhaut = WindowHeight (num_fenetre)
winlarg = WindowWidth (num_fenetre)
Select type.s
;la fenetre retreci la largeur
Case "larg"
For cont=winlarg To 1 Step -2
ResizeWindow (num_fenetre,-1,-1,cont, winhaut)
Next cont
; ------------------------------------------------------------------------------------------
;la fenetre retreci la hauteur
Case "haut"
For cont=winhaut To 1 Step -2
ResizeWindow (num_fenetre,-1,-1,winlarg,cont)
Next cont
; ------------------------------------------------------------------------------------------
;la fenetre elactic
Case "elast"
For cont=winhaut To 1 Step -2
ResizeWindow (num_fenetre,-1,-1,winlarg,cont)
Next cont
For cont=1 To winhaut
ResizeWindow (num_fenetre,-1,-1,winlarg,cont)
Next cont
For cont=winhaut To 1 Step -2
ResizeWindow (num_fenetre,-1,-1,winlarg,cont)
Next cont
; ------------------------------------------------------------------------------------------
Case "elast2"
;la fenetre elactic2
For p=1 To 2
For cont=winhaut To 1 Step -2
ResizeWindow (num_fenetre,-1,-1,winlarg,cont)
Next cont
For cont=1 To winhaut Step 2
ResizeWindow (num_fenetre,-1,-1,winlarg,cont)
Next cont
For cont=winhaut To 1 Step -2
ResizeWindow (num_fenetre,-1,-1,winlarg,cont)
Next cont
Next p
; ------------------------------------------------------------------------------------------
;la fenetre part a gauche
Case "go_gauche"
; un petit coup a droite
For cont=winx To winx+100 Step 1
ResizeWindow(num_fenetre,cont,winy,-1,-1)
Next cont
For cont=winx To 0 Step -2
ResizeWindow(num_fenetre,cont,winy,-1,-1)
Next cont
; ------------------------------------------------------------------------------------------
;la fenetre part a droite
Case "go_droite"
; un petit coup a gauche
For cont=winx To winx-100 Step -1
ResizeWindow(num_fenetre,cont,winy,-1,-1)
Next cont
For cont=winx To 1024 Step 2
ResizeWindow(num_fenetre,cont,winy,-1,-1)
Next cont
; ------------------------------------------------------------------------------------------
;la fenetre part en bas
Case "go_bas"
For cont=winy To 800 Step 1
ResizeWindow(num_fenetre,-1,cont,-1,-1)
Next cont
; ------------------------------------------------------------------------------------------
;la fenetre part en haut
Case "go_haut"
For cont=winy To 0 Step -2
ResizeWindow(num_fenetre,-1,cont,-1,-1)
Next cont
; ------------------------------------------------------------------------------------------
Case "trou_1"
For i=0 To WindowHeight (num_fenetre) Step 4
Region1 = CreateRectRgn_ (0, 0, WindowWidth (num_fenetre), WindowHeight (num_fenetre)) ; Création d'une région en rectangle
Region2 = CreateRectRgn_ (0, 0,i,i) ; Création d'une région en rectangle
CombineRgn_ (Region1, Region1, Region2, #RGN_DIFF ) ; On combine les 2 régions
SetWindowRgn_ ( WindowID (num_fenetre), Region1, #True ) ; On applique la région finale
Delay (1)
DeleteObject_ (Region1) ; On supprime les régions
DeleteObject_ (Region2)
Next i
Case "trou_2"
For i= WindowHeight (num_fenetre) To 0 Step -6
Region1 = CreateRectRgn_ (0, 0, WindowWidth (num_fenetre), WindowHeight (num_fenetre)) ; Création d'une région en rectangle
Region2 = CreateRectRgn_ (i, i, WindowWidth (num_fenetre)-i, WindowHeight (num_fenetre)-i) ; Création d'une région en rectangle
CombineRgn_ (Region1, Region1, Region2, #RGN_XOR ) ; On combine les 2 régions
SetWindowRgn_ ( WindowID (num_fenetre), Region1, #True ) ; On applique la région finale
Delay (1)
DeleteObject_ (Region1) ; On supprime les régions
DeleteObject_ (Region2)
Next i
Case "trou_3"
For i= WindowHeight (num_fenetre) To 0 Step -4
Region1 = CreateRectRgn_ (0, 0, WindowWidth (num_fenetre)-i, WindowHeight (num_fenetre)-i) ; Création d'une région en rectangle
Region2 = CreateRectRgn_ (i, i, WindowWidth (num_fenetre)-i, WindowHeight (num_fenetre)-i) ; Création d'une région en rectangle
CombineRgn_ (Region1, Region1, Region2, #RGN_XOR ) ; On combine les 2 régions
SetWindowRgn_ ( WindowID (num_fenetre), Region1, #True ) ; On applique la région finale
Delay (1)
DeleteObject_ (Region1) ; On supprime les régions
DeleteObject_ (Region2)
Next i
Case "trou_4"
For i= WindowHeight (num_fenetre) To 0 Step -4
Region1 = CreateRectRgn_ (0, 0, WindowWidth (num_fenetre)-i, WindowHeight (num_fenetre)-i) ; Création d'une région en rectangle
Region2 = CreateRectRgn_ (i, i, WindowWidth (num_fenetre)-i, WindowHeight (num_fenetre)-i) ; Création d'une région en rectangle
CombineRgn_ (Region1, Region1, Region2, #RGN_DIFF ) ; On combine les 2 régions
SetWindowRgn_ ( WindowID (num_fenetre), Region1, #True ) ; On applique la région finale
Delay (1)
DeleteObject_ (Region1) ; On supprime les régions
DeleteObject_ (Region2)
Next i
Case "trou_5"
For i= WindowHeight (num_fenetre) To 0 Step -4
Region1 = CreateRectRgn_ (i, i, WindowWidth (num_fenetre), WindowHeight (num_fenetre)) ; Création d'une région en rectangle
Region2 = CreateRectRgn_ (i, i, WindowWidth (num_fenetre)-i, WindowHeight (num_fenetre)-i) ; Création d'une région en rectangle
CombineRgn_ (Region1, Region1, Region2, #RGN_XOR ) ; On combine les 2 régions
SetWindowRgn_ ( WindowID (num_fenetre), Region1, #True ) ; On applique la région finale
Delay (1)
DeleteObject_ (Region1) ; On supprime les régions
DeleteObject_ (Region2)
Next i
Case "trou_6"
For i= WindowHeight (num_fenetre) To 0 Step -4
Region1 = CreateRectRgn_ (i, i, WindowWidth (num_fenetre), WindowHeight (num_fenetre)) ; Création d'une région en rectangle
Region2 = CreateRectRgn_ (-i, -i, WindowWidth (num_fenetre)-i, WindowHeight (num_fenetre)-i) ; Création d'une région en rectangle
CombineRgn_ (Region1, Region1, Region2, #RGN_XOR ) ; On combine les 2 régions
SetWindowRgn_ ( WindowID (num_fenetre), Region1, #True ) ; On applique la région finale
Delay (1)
DeleteObject_ (Region1) ; On supprime les régions
DeleteObject_ (Region2)
Next i
Case "trou_7"
For i= WindowHeight (num_fenetre) To 0 Step -4
x1= Random ( WindowWidth (num_fenetre))
y1= Random ( WindowHeight (num_fenetre))
Region1 = CreateRectRgn_ (x1,y1, WindowWidth (num_fenetre), WindowHeight (num_fenetre)) ; Création d'une région en rectangle
Region2 = CreateRectRgn_ (x1, y1, WindowWidth (num_fenetre)-i, WindowHeight (num_fenetre)-i) ; Création d'une région en rectangle
CombineRgn_ (Region1, Region1, Region2, #RGN_XOR ) ; On combine les 2 régions
SetWindowRgn_ ( WindowID (num_fenetre), Region1, #True ) ; On applique la région finale
Delay (1)
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
Next i
Case "trou_8"
For i= 0 To WindowWidth(num_fenetre) Step 6
Region1 = CreateRectRgn_(0,0, WindowWidth(num_fenetre), WindowHeight(num_fenetre)) ; Création d'une région en rectangle
Region2 = CreateEllipticRgn_(-i,-i, i,i) ; Création de la région pour faire une fenêtre elliptique
CombineRgn_(Region1, Region1, Region2, #RGN_DIFF) ; On combine les 2 régions
SetWindowRgn_(WindowID(num_fenetre), Region1, #True) ; On applique la région finale
Delay(5)
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
Next i
Case "trou_9"
For i= 0 To WindowWidth(num_fenetre) Step 2
Region1 = CreateRectRgn_(0,0, WindowWidth(num_fenetre), WindowHeight(num_fenetre)) ; Création d'une région en rectangle
Region2 = CreateEllipticRgn_( WindowWidth(num_fenetre)-i,WindowHeight(num_fenetre)-i, i,i) ; Création de la région pour faire une fenêtre elliptique
CombineRgn_(Region1, Region1, Region2, #RGN_DIFF) ; On combine les 2 régions
Delay(1)
SetWindowRgn_(WindowID(num_fenetre), Region1, #True) ; On applique la région finale
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
Next i
Case "trou_10"
For i= 0 To WindowWidth(num_fenetre)/2 Step 6
Region1 = CreateRectRgn_(0,0, WindowWidth(num_fenetre), WindowHeight(num_fenetre)) ; Création d'une région en rectangle
Region1 = CreateRectRgn_(WindowWidth(num_fenetre)-i,WindowHeight(num_fenetre)-i, i,i) ; Création d'une région en rectangle
CombineRgn_(Region1, Region1, Region2, #RGN_DIFF) ; On combine les 2 régions
Delay(1)
SetWindowRgn_(WindowID(num_fenetre), Region1, #True) ; On applique la région finale
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
Next i
EndSelect
CloseWindow(num_fenetre)
EndProcedure
; #Fenetre, 50, 50, 200, 200, #PB_Window_SystemMenu , "hello"
Procedure ouvre_win(num_fenetre,x,y,larg,haut,Options,titre$,type.s)
winx = x
winy = y
winhaut =haut
winlarg =larg
OpenWindow(num_fenetre, x, y, winlarg , winhaut, titre$,Options )
Select type.s
Case "apparait_1"
For i=WindowHeight(num_fenetre) To 0 Step -32
Region1 = CreateRectRgn_(0, 0, WindowWidth(num_fenetre), WindowHeight(num_fenetre)) ; Création d'une région en rectangle
Region2 = CreateRectRgn_(0, 0,i,i) ; Création d'une région en rectangle
CombineRgn_(Region1, Region1, Region2, #RGN_DIFF) ; On combine les 2 régions
SetWindowRgn_(WindowID(num_fenetre), Region1, #True) ; On applique la région finale
Delay(100)
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
Next i
Case "apparait_bas_droite"
For i=WindowHeight(num_fenetre) To 0 Step -6
Region1 = CreateRectRgn_(0, 0, WindowWidth(num_fenetre), WindowHeight(num_fenetre)) ; Création d'une région en rectangle
Region2 = CreateRectRgn_(i, i,WindowWidth(num_fenetre),WindowHeight(num_fenetre)) ; Création d'une région en rectangle
CombineRgn_(Region1, Region1, Region2, #RGN_AND) ; On combine les 2 régions
SetWindowRgn_(WindowID(num_fenetre), Region1, #True) ; On applique la région finale
Delay(1)
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
Next i
Case "apparait_droite"
For i=WindowHeight(num_fenetre) To 0 Step -6
Region1 = CreateRectRgn_(0, 0, WindowWidth(num_fenetre)+i, WindowHeight(num_fenetre)+i) ; Création d'une région en rectangle
Region2 = CreateRectRgn_(i, -i,WindowWidth(num_fenetre)+i,WindowHeight(num_fenetre)+i) ; Création d'une région en rectangle
CombineRgn_(Region1, Region1, Region2, #RGN_AND) ; On combine les 2 régions
SetWindowRgn_(WindowID(num_fenetre), Region1, #True) ; On applique la région finale
Delay(1)
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
Next i
Case "apparait_bas"
For i=WindowHeight(num_fenetre) To 0 Step -6
Region1 = CreateRectRgn_(0, 0, WindowWidth(num_fenetre)+i, WindowHeight(num_fenetre)+i) ; Création d'une région en rectangle
Region2 = CreateRectRgn_(-i, i,WindowWidth(num_fenetre)+i,WindowHeight(num_fenetre)+i) ; Création d'une région en rectangle
CombineRgn_(Region1, Region1, Region2, #RGN_AND) ; On combine les 2 régions
SetWindowRgn_(WindowID(num_fenetre), Region1, #True) ; On applique la région finale
Delay(1)
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
Next i
Case"apparait_trou"
For i= WindowWidth(num_fenetre) To 0 Step-6
Region1 = CreateRectRgn_(0,0, WindowWidth(num_fenetre), WindowHeight(num_fenetre)) ; Création d'une région en rectangle
Region2 = CreateEllipticRgn_(-i,-i, i,i) ; Création de la région pour faire une fenêtre elliptique
CombineRgn_(Region1, Region1, Region2, #RGN_DIFF) ; On combine les 2 régions
SetWindowRgn_(WindowID(num_fenetre), Region1, #True) ; On applique la région finale
Delay(5)
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
Next i
Case "apparait_trou_2"
For i= 0 To WindowWidth(num_fenetre)/2 Step 2
Region1 = CreateRectRgn_(0,0, WindowWidth(num_fenetre), WindowHeight(num_fenetre)) ; Création d'une région en rectangle
Region2 = CreateEllipticRgn_(WindowWidth(num_fenetre)-i,WindowHeight(num_fenetre)-i, i, i) ; Création de la région pour faire une fenêtre elliptique
CombineRgn_(Region1, Region1, Region2, #RGN_DIFF) ; On combine les 2 régions
Delay(1)
SetWindowRgn_(WindowID(num_fenetre), Region1, #True) ; On applique la région finale
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
Next i
Case "apparait_trou_3"
For i= 0 To WindowWidth(num_fenetre)/2 Step 2
Region1 = CreateRectRgn_(0,0, WindowWidth(num_fenetre), WindowHeight(num_fenetre)) ; Création d'une région en rectangle
Region2 = CreateRectRgn_(WindowWidth(num_fenetre)-i,WindowHeight(num_fenetre)-i, i, i) ; Création d'une région en rectangle
CombineRgn_(Region1, Region1, Region2, #RGN_DIFF) ; On combine les 2 régions
Delay(1)
SetWindowRgn_(WindowID(num_fenetre), Region1, #True) ; On applique la région finale
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
Next i
Case "apparait_trou_4"
For i= 0 To WindowWidth(num_fenetre) Step 6
Region1 = CreateRectRgn_(WindowWidth(num_fenetre)-i,WindowHeight(num_fenetre)-i, i,i) ; Création d'une région en rectangle
Delay(1)
SetWindowRgn_(WindowID(num_fenetre), Region1, #True) ; On applique la région finale
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
Next i
Case "apparait_trou_5"
For i= WindowWidth(num_fenetre)/4 To 0 Step -4
Region1 = CreateRectRgn_(WindowWidth(num_fenetre)-i,WindowHeight(num_fenetre)-i,i,i) ; Création d'une région en rectangle
Delay(1)
SetWindowRgn_(WindowID(num_fenetre), Region1, #True) ; On applique la région finale
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
Next i
EndSelect
OpenWindow(num_fenetre, x, y, winlarg , winhaut, titre$,Options )
EndProcedure