OVH Cloud OVH Cloud

AnimateWindow et GetWindow

2 réponses
Avatar
imej-clavier
'Ouvrir et fermer les fenêtres de manière originale (GetActiveWindow et
AnimateWindow de user32)
Bonjour,
Je ne suis qu'un amateur, mais je souhaiterais me servir d'AnimateWindow.
J'ai déjà demandé une réponse au NewsGroup, mais ces réponses ne
fonctionnent pas (ou alors
j'ai mal compris leur contenu, ou la façon de les utiliser).
Voici un petit bout de code (normalement bon puisqu'il provient d'un cours
VBA.
Je souhaiterais faire fonctionner celà sur un UserForm. Que dois-je faire ?
D'avance merci. Jean-michel

Declare Function AnimateWindow Lib "user32" ( _
ByVal hwnd As Long, _
ByVal dwTime As Long, _
ByVal dwFlags As Long) As Long
Declare Function GetActiveWindow Lib "user32" () As Long

Sub par_le_centre()
Sheets(1).Activate
fen = GetActiveWindow()
Call AnimateWindow(fen, 500, &H10 Or &H10000)
Call AnimateWindow(fen, 500, &H10 Or &H20000)
End Sub

Sub haut_bas_cotes()
Sheets(1).Activate
fen = GetActiveWindow()
Call AnimateWindow(fen, 500, &H4 Or &H10000)
Call AnimateWindow(fen, 500, &H2 Or &H20000)
Call AnimateWindow(fen, 500, &H8 Or &H10000)
Call AnimateWindow(fen, 500, &H1 Or &H20000)
End Sub

Selon les paramètres, la fonction AnimateWindow masque (&H10000) ou affiche
(&H20000) la fenêtre avec des effets spéciaux (par le centre &H10, de droite
à gauche, de haut en bas et inversement).

2 réponses

Avatar
michdenis
Bonjour imej-clavier,

Voici une procédure de Michel Perron sur le sujet.

Si tu es débutant et que tu veuilles quelque chose de très précis comme animation, tu es mieux de bien décrire ce que tu
recherches ....et espérer qu'un intervenant féru en API, décide de t'accorder ses faveurs !

à coller dans ton formulaire, attention au nom de l'objet.

Private Sub UserForm_Activate()
Dim i&, u&
For i = 0 To x
Me.Width = i: Me.Height = i * y
DoEvents
UserForm1.Repaint
Next i
End Sub

Private Sub UserForm_Initialize()
x = Me.Width: y = Me.Height / x
Me.StartUpPosition = 0
Me.Left = (Application.Width - Me.Width) / 2
Me.Top = (Application.Height - Me.Height) / 2
Me.Width = 0: Me.Height = 0
End Sub


Salutations!

"imej-clavier" a écrit dans le message de news:
'Ouvrir et fermer les fenêtres de manière originale (GetActiveWindow et
AnimateWindow de user32)
Bonjour,
Je ne suis qu'un amateur, mais je souhaiterais me servir d'AnimateWindow.
J'ai déjà demandé une réponse au NewsGroup, mais ces réponses ne
fonctionnent pas (ou alors
j'ai mal compris leur contenu, ou la façon de les utiliser).
Voici un petit bout de code (normalement bon puisqu'il provient d'un cours
VBA.
Je souhaiterais faire fonctionner celà sur un UserForm. Que dois-je faire ?
D'avance merci. Jean-michel

Declare Function AnimateWindow Lib "user32" ( _
ByVal hwnd As Long, _
ByVal dwTime As Long, _
ByVal dwFlags As Long) As Long
Declare Function GetActiveWindow Lib "user32" () As Long

Sub par_le_centre()
Sheets(1).Activate
fen = GetActiveWindow()
Call AnimateWindow(fen, 500, &H10 Or &H10000)
Call AnimateWindow(fen, 500, &H10 Or &H20000)
End Sub

Sub haut_bas_cotes()
Sheets(1).Activate
fen = GetActiveWindow()
Call AnimateWindow(fen, 500, &H4 Or &H10000)
Call AnimateWindow(fen, 500, &H2 Or &H20000)
Call AnimateWindow(fen, 500, &H8 Or &H10000)
Call AnimateWindow(fen, 500, &H1 Or &H20000)
End Sub

Selon les paramètres, la fonction AnimateWindow masque (&H10000) ou affiche
(&H20000) la fenêtre avec des effets spéciaux (par le centre &H10, de droite
à gauche, de haut en bas et inversement).
Avatar
Jean-François Aubert
Bonjour,

......ne pas oublier d'ajouter en tête de module du formulaire:

Dim x,y


--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"michdenis" a écrit dans le message de news:
%
Bonjour imej-clavier,

Voici une procédure de Michel Perron sur le sujet.

Si tu es débutant et que tu veuilles quelque chose de très précis comme
animation, tu es mieux de bien décrire ce que tu
recherches ....et espérer qu'un intervenant féru en API, décide de
t'accorder ses faveurs !

à coller dans ton formulaire, attention au nom de l'objet.

Private Sub UserForm_Activate()
Dim i&, u&
For i = 0 To x
Me.Width = i: Me.Height = i * y
DoEvents
UserForm1.Repaint
Next i
End Sub

Private Sub UserForm_Initialize()
x = Me.Width: y = Me.Height / x
Me.StartUpPosition = 0
Me.Left = (Application.Width - Me.Width) / 2
Me.Top = (Application.Height - Me.Height) / 2
Me.Width = 0: Me.Height = 0
End Sub


Salutations!

"imej-clavier" a écrit dans le message de
news:
'Ouvrir et fermer les fenêtres de manière originale (GetActiveWindow et
AnimateWindow de user32)
Bonjour,
Je ne suis qu'un amateur, mais je souhaiterais me servir d'AnimateWindow.
J'ai déjà demandé une réponse au NewsGroup, mais ces réponses ne
fonctionnent pas (ou alors
j'ai mal compris leur contenu, ou la façon de les utiliser).
Voici un petit bout de code (normalement bon puisqu'il provient d'un cours
VBA.
Je souhaiterais faire fonctionner celà sur un UserForm. Que dois-je faire
?
D'avance merci. Jean-michel

Declare Function AnimateWindow Lib "user32" ( _
ByVal hwnd As Long, _
ByVal dwTime As Long, _
ByVal dwFlags As Long) As Long
Declare Function GetActiveWindow Lib "user32" () As Long

Sub par_le_centre()
Sheets(1).Activate
fen = GetActiveWindow()
Call AnimateWindow(fen, 500, &H10 Or &H10000)
Call AnimateWindow(fen, 500, &H10 Or &H20000)
End Sub

Sub haut_bas_cotes()
Sheets(1).Activate
fen = GetActiveWindow()
Call AnimateWindow(fen, 500, &H4 Or &H10000)
Call AnimateWindow(fen, 500, &H2 Or &H20000)
Call AnimateWindow(fen, 500, &H8 Or &H10000)
Call AnimateWindow(fen, 500, &H1 Or &H20000)
End Sub

Selon les paramètres, la fonction AnimateWindow masque (&H10000) ou
affiche
(&H20000) la fenêtre avec des effets spéciaux (par le centre &H10, de
droite
à gauche, de haut en bas et inversement).