Page 1 sur 1

animation des fenetres

Publié : sam. 01/sept./2007 21:17
par Anonyme
1° ) oui, tu intercepte la fermeture de la fenetre puis tu fait monté ta fenetre avec ResizeWindow()

2°) tu prends de la bave de crapeau, une aile de pigeon , un peu d'ail , de l'écaille de dragon, un peu de souffre , tu met le tout à mijoté dans un chaudron en ébulition pendant deux lunes, ensuite tu invoques le dieu Phrède.



v'la quand même un bout de code pour ta première question ( testé sous linux ) :

Code : Tout sélectionner

OpenWindow(0,0,0,640,480,"FERME MOI!",#PB_Window_SizeGadget|#PB_Window_SystemMenu     )




Repeat
    
    Event = WindowEvent()
    
    If Event = #PB_Event_CloseWindow
        Win_Y.f = WindowY(0)
        Win_X.f = WindowX(0)
        scalex.l = WindowWidth(0)
        scaley.l = WindowHeight(0)
        Up=1
    EndIf
    
    If Up=1
        
        NWin_Y.f = Win_Y + 50 * Cos(ElapsedMilliseconds()/500)
        NWin_X.f = Win_X + 50 * Sin(ElapsedMilliseconds()/500)
        
        scalex=scalex-1
        scaley=scaley-1
        
        ResizeWindow(0, NWin_X,NWin_Y,scalex,scaley)
        
        If scalex<0 Or scaley<0
            End
        EndIf
        
        
    EndIf
    
    Delay(10)
Until Quit=#True
 

Publié : sam. 01/sept./2007 22:37
par Backup
j'avais fait 2 fonctions pour ça !! :D

une pour les effet d'ouverture
une pour des effet de fermeture !!

voici le code !! :)


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 !!  :-) ..... comme toujours !  :-D )

; 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 ***********
; *******************************
; 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(#Fenetre,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")
;ouvre_win(#Fenetre,321, 217, 257, 200,#PB_Window_SystemMenu,"hello","viens_de_droite")  
;ouvre_win(#Fenetre,321, 217, 257, 200,#PB_Window_SystemMenu,"hello","viens_de_gauche") 
;ouvre_win(#Fenetre,321, 217, 257, 200,#PB_Window_SystemMenu,"hello","viens_du_haut") 
;ouvre_win(#Fenetre,321, 217, 257, 200,#PB_Window_SystemMenu,"hello","viens_du_bas") 
; ************************************************************************************************
 ; *******************************************

; **** 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 !
        
        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 ?

; 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)
    ;SetActiveWindow(num_fenetre)
    winx = WindowX(num_fenetre)
    winy = WindowY(num_fenetre) 
    winhaut = WindowHeight(num_fenetre)
    winlarg = WindowWidth(num_fenetre) 
    ExamineDesktops()
    hauteur_ecran = DesktopHeight(0)
    largeur_ecran = DesktopWidth(0)
    
    Select type.s
        ;la fenetre retreci la largeur
        Case "larg"
            For cont=winlarg To 1 Step -2
                ResizeWindow(num_fenetre,#PB_Ignore, winhaut,cont,#PB_Ignore) 
            Next cont 
            ; ------------------------------------------------------------------------------------------
            ;la fenetre retreci la hauteur
        Case "haut"
            For cont=winhaut To 1 Step -2
                ResizeWindow(num_fenetre,winlarg,#PB_Ignore,#PB_Ignore,cont)
                Delay(1)
            Next cont
            ; ------------------------------------------------------------------------------------------
            
            ;la fenetre elactic
        Case "elast"
            For cont=winhaut To 1 Step -2
                ResizeWindow(num_fenetre,winlarg,#PB_Ignore,#PB_Ignore,cont) 
            Next cont
            For cont=1 To winhaut
                ResizeWindow(num_fenetre,winlarg,#PB_Ignore,#PB_Ignore,cont) 
            Next cont
            For cont=winhaut To 1 Step -2
                ResizeWindow(num_fenetre,winlarg,#PB_Ignore,#PB_Ignore,cont) 
            Next cont
            
            ; ------------------------------------------------------------------------------------------
        Case "elast2"
            ;la fenetre elactic2
            For p=1 To 2
                For cont=winhaut To 1 Step -2
                    ResizeWindow(num_fenetre,winlarg,#PB_Ignore,cont,cont)
                Next cont
                For cont=1 To winhaut Step 2
                    ResizeWindow(num_fenetre,winlarg,#PB_Ignore,cont,cont)
                Next cont
                
                For cont=winhaut To 1 Step -2
                    ResizeWindow(num_fenetre,winlarg,#PB_Ignore,cont,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,#PB_Ignore,#PB_Ignore,#PB_Ignore)
            Next cont
            
            For cont=winx To  0-winlarg Step -2
                ResizeWindow(num_fenetre,cont,#PB_Ignore,#PB_Ignore,#PB_Ignore)
            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,#PB_Ignore,#PB_Ignore,#PB_Ignore) 
            Next cont
            
            For cont=winx-100 To largeur_ecran  Step 2 
                ResizeWindow(num_fenetre,cont,#PB_Ignore,#PB_Ignore,#PB_Ignore) 
            Next cont
            ; ------------------------------------------------------------------------------------------
            ;la fenetre part en bas
        Case  "go_bas"
            For cont=winy To  hauteur_ecran Step 1
                ResizeWindow(num_fenetre,#PB_Ignore,cont,#PB_Ignore,#PB_Ignore)
            Next cont
            ; ------------------------------------------------------------------------------------------
            ;la fenetre part en haut
        Case  "go_haut"
            For cont=winy To 0-winhaut Step -1
                ResizeWindow(num_fenetre,#PB_Ignore,cont, #PB_Ignore, #PB_Ignore)  
            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
    ExamineDesktops()
    hauteur_ecran = DesktopHeight(0)
    largeur_ecran = DesktopWidth(0)
    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
        Case "viens_de_droite" 
            For cont=largeur_ecran To largeur_ecran /2 Step-1
                ResizeWindow(num_fenetre,cont,#PB_Ignore,#PB_Ignore,#PB_Ignore) 
            Next cont 
            
        Case "viens_de_gauche" 
            For cont=0-winlarg To largeur_ecran /2 
                ResizeWindow(num_fenetre,cont,#PB_Ignore,#PB_Ignore,#PB_Ignore) 
            Next cont 
        Case "viens_du_haut" 
            For cont=0 To hauteur_ecran /2 
                ResizeWindow(num_fenetre,#PB_Ignore,cont,#PB_Ignore,#PB_Ignore) 
            Next cont 
        Case "viens_du_bas" 
            For cont=hauteur_ecran To hauteur_ecran /2 Step-2
                ResizeWindow(num_fenetre,#PB_Ignore,cont,#PB_Ignore,#PB_Ignore) 
            Next cont 
            
    EndSelect
    OpenWindow(num_fenetre, x, Y, winlarg , winhaut,titre$, Options ) 
EndProcedure 

Publié : dim. 02/sept./2007 2:20
par venom
pour rester dans le meme esprit j'ai fait sa une fois

Code : Tout sélectionner

;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
Enumeration
  #Button_0
  #Button_1
  #Button_2
  #Button_3
  #Button_4
  #Button_5
  #Button_6
  #Button_7
  #Button_8
  #Button_9
  #_StringGadget0
  #Text_0
EndEnumeration

Procedure AnimationClose(Fenetre, Effet, Duree)
  AnimateWindow_(WindowID(Fenetre), Duree, Effet | #AW_HIDE)
EndProcedure

If OpenWindow(#Window_0, 216, 0, 440, 140, "Api's test fermeture", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
  If CreateGadgetList(WindowID(#Window_0))
    ButtonGadget(#Button_0, 20, 20, 100, 30, "gauche a droite")
    ButtonGadget(#Button_1, 120, 20, 100, 30, "droite a gauche")
    ButtonGadget(#Button_2, 220, 20, 100, 30, "bas vers haut")
    ButtonGadget(#Button_3, 320, 20, 100, 30, "haut vers bas")
    ButtonGadget(#Button_4, 20, 50, 100, 30, "bas G haut D")
    ButtonGadget(#Button_5, 120, 50, 100, 30, "bas D haut G")
    ButtonGadget(#Button_6, 220, 50, 100, 30, "haut G bas D")
    ButtonGadget(#Button_7, 320, 50, 100, 30, "haut D bas G")
    ButtonGadget(#Button_8, 120, 80, 100, 30, "centre")
    ButtonGadget(#Button_9, 220, 80, 100, 30, "fondu")
    StringGadget(#_StringGadget0, 170, 115, 100, 20, Chaine$)
    TextGadget(#Text_0, 20, 117, 250, 20, "entrée votre durée ici en mS:")
  EndIf
EndIf

Repeat
  EventID = WaitWindowEvent()
  If EventID = #PB_Event_Gadget
    Select EventGadget()

      Case #Button_0
        Chaine$ = GetGadgetText(#_StringGadget0)
        AnimationClose(#Window_0, #AW_HOR_POSITIVE, Val(Chaine$)) ; gauche a droite
        End
        
      Case #Button_1
        Chaine$ = GetGadgetText(#_StringGadget0)
        AnimationClose(#Window_0, #AW_HOR_NEGATIVE, Val(Chaine$)) ; droite a gauche
        End
        
      Case #Button_2
        Chaine$ = GetGadgetText(#_StringGadget0)
        AnimationClose(#Window_0, #AW_VER_NEGATIVE, Val(Chaine$)) ; bas vers haut
        End
        
      Case #Button_3
        Chaine$ = GetGadgetText(#_StringGadget0)
        AnimationClose(#Window_0, #AW_VER_POSITIVE, Val(Chaine$)) ; haut vers bas
        End
        
      Case #Button_4
        Chaine$ = GetGadgetText(#_StringGadget0)
        AnimationClose(#Window_0, #AW_HOR_POSITIVE | #AW_VER_NEGATIVE, Val(Chaine$)) ; bas G haut D
        End
        
      Case #Button_5
        Chaine$ = GetGadgetText(#_StringGadget0)
        AnimationClose(#Window_0, #AW_HOR_NEGATIVE | #AW_VER_NEGATIVE, Val(Chaine$)) ; bas D haut G
        End
        
      Case #Button_6
        Chaine$ = GetGadgetText(#_StringGadget0)
        AnimationClose(#Window_0, #AW_VER_POSITIVE | #AW_HOR_POSITIVE, Val(Chaine$)) ; haut G bas D
        End
        
      Case #Button_7
        Chaine$ = GetGadgetText(#_StringGadget0)
        AnimationClose(#Window_0, #AW_HOR_NEGATIVE | #AW_VER_POSITIVE, Val(Chaine$)) ; haut D bas G
        End
        
      Case #Button_8
        Chaine$ = GetGadgetText(#_StringGadget0)
        AnimationClose(#Window_0, #AW_CENTER, Val(Chaine$)) ; centre
        End
        
      Case #Button_9
        Chaine$ = GetGadgetText(#_StringGadget0)
        AnimationClose(#Window_0, #AW_BLEND, Val(Chaine$)) ; fondu
        End
        
    EndSelect
  EndIf
Until EventID = #PB_Event_CloseWindow
AnimationClose(#Window_0, #AW_CENTER, Val(Chaine$)) ; centre

@++

Publié : dim. 02/sept./2007 13:37
par Chris
Voilà le code qui correspond à ce que tu cherches.

Pas besoin d'une usine à gaz pour faire monter une fenêtre :lol:

[Edit] Et en plus, je m'étais gourré. J'avais mis WindowWidth() au lieu de WindowHeight(). Heureusement que la fenêtre est à peu près carrée... :lol:

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 222, 200, "Fenêtre qui monte", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  Vitesse = 10 ; Paramètre à changer pour modifier la vitesse
  
  Repeat
    Select WaitWindowEvent()
      
      Case #PB_Event_CloseWindow
        
        While WindowY(0) + WindowHeight(0) > 0
          ResizeWindow(0, #PB_Ignore, WindowY(0) - Vitesse, #PB_Ignore, #PB_Ignore)
          Delay(1)
        Wend
        
        quit = 1
        
    EndSelect
  Until quit = 1
EndIf
Pour la deuxième question, ... j'ai rien compris à ce que tu veux faire.

Publié : dim. 02/sept./2007 14:23
par Chris
Pour ta deuxième question, comme j'ai pas trop compris ce que tu voulais, je t'ai fait cet exemple.

Code : Tout sélectionner

Enumeration
  #Win1
  #Win2
  #Win3
EndEnumeration

Enumeration
  #Bouton
  #Bouton2
  #Bouton3
EndEnumeration

Procedure OpenWin2()
  OpenWindow(#Win2, 600, 480, 100, 100, "Fille 1", #PB_Window_SystemMenu)
  If CreateGadgetList(WindowID(#Win2))
    ButtonGadget(#Bouton2, 10, 20, 100, 20, "Fermer")
  EndIf
  
EndProcedure

Procedure OpenWin3()
  OpenWindow(#Win3, 450, 480, 100, 100, "Fille 2", #PB_Window_SystemMenu)
  If CreateGadgetList(WindowID(#Win3))
    ButtonGadget(#Bouton3, 10, 20, 100, 20, "Fermer")
  EndIf
  
EndProcedure

If OpenWindow(#Win1, 0, 0, 200, 60, "Fenêtres multiples", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If CreateGadgetList(WindowID(#Win1))
    ButtonGadget(#Bouton, 50, 20, 100, 20, "Ouvrir")
  EndIf
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Bouton ; On clique sur le bouton pour ouvrir deux fenêtres secondaires
            OpenWin2()
            OpenWin3()
            
          Case #Bouton2 ; On clique sur le bouton de la fenêtre 2 pour la fermer
            CloseWindow(#Win2)
            
          Case #Bouton3 ; Idem que pour la fenêtre 2
            CloseWindow(#Win3)
            
        EndSelect
      
      Case #PB_Event_CloseWindow
        Select EventWindow() ; EventWindow donne l'index de la fenêtre sur lequel a lieu l'évenement
          
          Case #Win1 : quit = 1 ; Si c'est la fenêtre principale, on quitte
            
          Case #Win2 : CloseWindow(#Win2) ; Si c'est la fenêtre 2, on la ferme sans quitter
            
          Case #Win3 : CloseWindow(#Win3) ; Idem que pour la fenêtre 2
            
        EndSelect
    EndSelect
    
  Until quit = 1
EndIf

End
  

Publié : dim. 02/sept./2007 19:28
par Backup
bon j'ai nettoyé ce topic, en ne laissant que le coté animation des fenetres

du coup ce sera plus facile de retrouver les codes :D

je m'excuse aupres de ceux dont j'ai effacé le topic
mais celui-ci partait en live !!

la au moins c'est clair ! :D