Accueil > > > ANIMATED WINDOWS
ANIMATED WINDOWS
Information sur la source
Description
Animated Window : Parfait exemple de l'utilisation de l'API. Ce code permet d'obtenir, via API, des effets d'ouverture et de fermeture des fenêtres. Par exemple, un effet de fondu par transparence (humm). Et le tout très facilement. Ce code est facilement réutilisable tel quel. Il est hyper commenté et pourra apprendre beaucoup aux débutants. Tout est dans le zip alors, éclatez-vous bien ;-)
Source
- Private Declare _
- Function AnimateWindow _
- Lib "user32" ( _
- ByVal hWnd As Long, _
- ByVal dwTime As Long, _
- ByVal dwFlags As Long) _
- As Long
-
- 'Etats primaires
- Private Const AwDroite = &H1
- Private Const AwGauche = &H2
- Private Const AwBas = &H4
- Private Const AwHaut = &H8
- Private Const AwCentre = &H10
- Private Const AwHide = &H10000
- Private Const AwShow = &H20000
- Private Const AwFondu = &H80000
- Private Const AwSlide = &H40000
- 'Etats secondaires
- Private Const AwDroiteBas = AwDroite Or AwBas
- Private Const AwDroiteHaut = AwDroite Or AwHaut
- Private Const AwGaucheBas = AwGauche Or AwBas
- Private Const AwGaucheHaut = AwGauche Or AwHaut
-
-
- Private Sub Form_Load()
- Dim varVitesse As Integer
- Dim varEffet As Long
-
- 'Rend aléatoire le timer (qui sert pour l'aléatoire...)
- Randomize Timer
-
- 'Choix aléatoire de la vitesse :
- '1 = 0,25 seconde
- '2 = 0,5 seconde
- '3 = 1 seconde
- varVitesse = Fix(Rnd * 3) + 1
- varVitesse = IIf(varVitesse = 1, 250, IIf(varVitesse = 2, 500, 1000))
-
- 'Choix aléatoire de l'effet
- varEffet = Fix(Rnd * 10) + 1
- varEffet = Choose(varEffet, AwFondu, _
- AwDroite, _
- AwGauche, _
- AwBas, _
- AwHaut, _
- AwDroiteBas, _
- AwDroiteHaut, _
- AwGaucheBas, _
- AwGaucheHaut, _
- AwCentre)
- 'Choix aléatoire du mode Normal ou Slide sauf
- ' pour l'effet fondu qui ne peut être que Normal.
- If varEffet <> AwFondu And Fix(Rnd * 2) = 1 Then varEffet = varEffet Or AwSlide
-
- 'NOTE: Me équivaut le nom de la fenêtre.
- ' Du coup, même si le nom de la fenêtre change,
- ' le code reste le même.
- 'NOTE: AwShow c'est pour l'ouverture de la fenêtre.
- AnimateWindow Me.hWnd, varVitesse, AwShow Or varEffet
-
- 'Note: Il faut raffraîchir tous les conteneurs.
- 'Pour se faire, on peut soit les lister manuellement p.ex. :
- 'Me.Refresh
- 'Picture1.Refresh
- 'Frame1.Refresh
- '...
- 'Mais cette technique peut s'avérer fastidieuse lorsque
- ' vous modifier votre interface (p.ex. l'ajout d'un
- ' nouveau contrôle ou la modification du nom d'un contrôle).
- 'Afin de ne pas avoir à retoucher ce code, la meilleur
- ' technique réside dans un scannage de tous les contrôles
- ' et de refraîchir tous ceux qui sont des conteneurs.
- 'Pour se faire, il faut parcourir l'objet "Controls" qui
- ' est une collection contenant tous les contrôles de la fenêtre.
- Me.Refresh 'Car Controls ne contient pas la fenêtre
- 'Une erreur va se produire si un contrôle ne possède pas
- ' la méthode Refresh. C'est à dire, si ce n'est pas un
- ' contrôle conteneur. Pour parer ce cas, on met en place
- ' un gestionnaire d'erreur qui, lors d'une erreur, continu
- ' le déroulement du programme sur l'instruction qui suit l'erreur.
- On Error Resume Next
- 'Parcours la collection "Controls" appartenant à la fenêtre.
- For Each objControleLambda In Me.Controls
- objControleLambda.Refresh
- Next objControleLambda 'Note: Ce nom est arbitraire et peut
- ' être changé...
- 'Ceci désactive tout gestionnaire d'erreur
- ' précédemment mis en place. C.a.d., le nôtre.
- On Error GoTo 0
- DoEvents
- 'Copiez simplement ce code sans le modifier.
- End Sub
-
-
-
- Private Sub Form_Unload(Cancel As Integer)
- Dim varVitesse As Integer
- Dim varEffet As Long
-
- 'NOTE: La fermeture est légèrement différente de l'ouverture :
- ' - Il est inutile de randomizer le timer (pour bcp de raisons);
- ' - Pour ne pas emerder l'utilisateur, on se doit de fermer
- ' le programme le plus rapidement possible. Donc, il est
- ' inutile de rendre aléatoire la vitesse de l'effet.
- ' Donc, on doit se contenter de la vitesse minimale assurant
- ' à l'effet un affichage correcte, c.a.d., 500 millisecondes.
- ' - AwSlide est nécessaire. Il n'y a donc pas de choix
- ' à faire entre le mode Normal et le mode Slide;
- ' - AwCentre n'a aucun effet;
- 'Choix aléatoire de l'effet :
- varEffet = Fix(Rnd * 9) + 1
- varEffet = Choose(varEffet, AwFondu, _
- AwDroite, _
- AwGauche, _
- AwBas, _
- AwHaut, _
- AwDroiteBas, _
- AwDroiteHaut, _
- AwGaucheBas, _
- AwGaucheHaut)
-
- 'NOTE: AwHide c'est pour la fermeture de la fenêtre.
- AnimateWindow Me.hWnd, 500, AwHide Or AwSlide Or varEffet
- End Sub
Private Declare _
Function AnimateWindow _
Lib "user32" ( _
ByVal hWnd As Long, _
ByVal dwTime As Long, _
ByVal dwFlags As Long) _
As Long
'Etats primaires
Private Const AwDroite = &H1
Private Const AwGauche = &H2
Private Const AwBas = &H4
Private Const AwHaut = &H8
Private Const AwCentre = &H10
Private Const AwHide = &H10000
Private Const AwShow = &H20000
Private Const AwFondu = &H80000
Private Const AwSlide = &H40000
'Etats secondaires
Private Const AwDroiteBas = AwDroite Or AwBas
Private Const AwDroiteHaut = AwDroite Or AwHaut
Private Const AwGaucheBas = AwGauche Or AwBas
Private Const AwGaucheHaut = AwGauche Or AwHaut
Private Sub Form_Load()
Dim varVitesse As Integer
Dim varEffet As Long
'Rend aléatoire le timer (qui sert pour l'aléatoire...)
Randomize Timer
'Choix aléatoire de la vitesse :
'1 = 0,25 seconde
'2 = 0,5 seconde
'3 = 1 seconde
varVitesse = Fix(Rnd * 3) + 1
varVitesse = IIf(varVitesse = 1, 250, IIf(varVitesse = 2, 500, 1000))
'Choix aléatoire de l'effet
varEffet = Fix(Rnd * 10) + 1
varEffet = Choose(varEffet, AwFondu, _
AwDroite, _
AwGauche, _
AwBas, _
AwHaut, _
AwDroiteBas, _
AwDroiteHaut, _
AwGaucheBas, _
AwGaucheHaut, _
AwCentre)
'Choix aléatoire du mode Normal ou Slide sauf
' pour l'effet fondu qui ne peut être que Normal.
If varEffet <> AwFondu And Fix(Rnd * 2) = 1 Then varEffet = varEffet Or AwSlide
'NOTE: Me équivaut le nom de la fenêtre.
' Du coup, même si le nom de la fenêtre change,
' le code reste le même.
'NOTE: AwShow c'est pour l'ouverture de la fenêtre.
AnimateWindow Me.hWnd, varVitesse, AwShow Or varEffet
'Note: Il faut raffraîchir tous les conteneurs.
'Pour se faire, on peut soit les lister manuellement p.ex. :
'Me.Refresh
'Picture1.Refresh
'Frame1.Refresh
'...
'Mais cette technique peut s'avérer fastidieuse lorsque
' vous modifier votre interface (p.ex. l'ajout d'un
' nouveau contrôle ou la modification du nom d'un contrôle).
'Afin de ne pas avoir à retoucher ce code, la meilleur
' technique réside dans un scannage de tous les contrôles
' et de refraîchir tous ceux qui sont des conteneurs.
'Pour se faire, il faut parcourir l'objet "Controls" qui
' est une collection contenant tous les contrôles de la fenêtre.
Me.Refresh 'Car Controls ne contient pas la fenêtre
'Une erreur va se produire si un contrôle ne possède pas
' la méthode Refresh. C'est à dire, si ce n'est pas un
' contrôle conteneur. Pour parer ce cas, on met en place
' un gestionnaire d'erreur qui, lors d'une erreur, continu
' le déroulement du programme sur l'instruction qui suit l'erreur.
On Error Resume Next
'Parcours la collection "Controls" appartenant à la fenêtre.
For Each objControleLambda In Me.Controls
objControleLambda.Refresh
Next objControleLambda 'Note: Ce nom est arbitraire et peut
' être changé...
'Ceci désactive tout gestionnaire d'erreur
' précédemment mis en place. C.a.d., le nôtre.
On Error GoTo 0
DoEvents
'Copiez simplement ce code sans le modifier.
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim varVitesse As Integer
Dim varEffet As Long
'NOTE: La fermeture est légèrement différente de l'ouverture :
' - Il est inutile de randomizer le timer (pour bcp de raisons);
' - Pour ne pas emerder l'utilisateur, on se doit de fermer
' le programme le plus rapidement possible. Donc, il est
' inutile de rendre aléatoire la vitesse de l'effet.
' Donc, on doit se contenter de la vitesse minimale assurant
' à l'effet un affichage correcte, c.a.d., 500 millisecondes.
' - AwSlide est nécessaire. Il n'y a donc pas de choix
' à faire entre le mode Normal et le mode Slide;
' - AwCentre n'a aucun effet;
'Choix aléatoire de l'effet :
varEffet = Fix(Rnd * 9) + 1
varEffet = Choose(varEffet, AwFondu, _
AwDroite, _
AwGauche, _
AwBas, _
AwHaut, _
AwDroiteBas, _
AwDroiteHaut, _
AwGaucheBas, _
AwGaucheHaut)
'NOTE: AwHide c'est pour la fermeture de la fenêtre.
AnimateWindow Me.hWnd, 500, AwHide Or AwSlide Or varEffet
End Sub
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
LISTER KEYS.KEYLISTER KEYS.KEY par Onin42
Cliquez pour lire la suite par Onin42
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|