EFFETS DE FONDU ANIMÉS (TRANSPARENCE/OPACITÉ) SUR LES FENÊTRES

Dragonmaster Messages postés 126 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 3 avril 2009 - 3 nov. 2004 à 15:13
wa7ch3000 Messages postés 336 Date d'inscription jeudi 21 août 2008 Statut Membre Dernière intervention 19 juillet 2015 - 8 nov. 2010 à 16:41
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/27301-effets-de-fondu-animes-transparence-opacite-sur-les-fenetres

wa7ch3000 Messages postés 336 Date d'inscription jeudi 21 août 2008 Statut Membre Dernière intervention 19 juillet 2015
8 nov. 2010 à 16:41
merci beaucoup pour ce code je vais le tester maintenant ;)
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
9 août 2006 à 15:31
Tiens j'avais oublié d'ajouter ce que tu avais proposé Mortalino, c'est fait maintenant.
J'avais jamais fait gaffe que AnimateWindow gérait le fondu... Enfin cette fonction rend la fenetre toute noir et laisse une bande noire au dessus de la barre de titre de la fenetre, donc ma méthode a encore de l'intérêt (ouf ^^)
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 août 2006 à 15:20
Salut PCPT ;)

Et oui, c'est vrai, j'ai oublié de le modifier. Vu que je l'ai testé pour voir ce que ça faisait...

Merci de ton attention !
(je testerai pour l'API des touches...)

++
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
9 août 2006 à 15:16
salut,
"Debug.Print" à remplacer par "Call" (sinon çà ne fonctionnera qu'en IDE ;) )
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 01:09
salut madm@tt,

sympa ta source. je m'en servirai certainement comme base pour mieux exploiter les APIs.

Essaie aussi de rajouter cette API :

Private Declare Function AnimateWindow Lib "user32" ( _
ByVal hWnd As Long, _
ByVal dwTime As Long, _
ByVal dwFlags As Long) As Long

Cet appel de fonction fera s'afficher progressivement la
fenêtre de son centre vers ses bords :
Debug.Print AnimateWindow(Me.hWnd, 10000, &H10 Or &H20000)

Constantes pour dwFlags :
AW_HOR_POSITIVE = &H1 Anime la fenêtre de gauche à droite.
AW_HOR_NEGATIVE = &H2 Anime la fenêtre de droite à gauche.
AW_VER_POSITIVE = &H4 Anime la fenêtre du haut vers le bas.
AW_VER_NEGATIVE = &H8 Anime la fenêtre du bas vers le haut.
AW_CENTER = &H10 Réduction de la fenêtre vers son centre (avec AW_HIDE), et inversement (avec AW_ACTIVATE).
AW_HIDE = &H10000 Cache la fenêtre.
AW_ACTIVATE = &H20000 Active la fenêtre.
AW_BLEND = &H80000 Effet de "fondu" sur la fenêtre (si elle est au premier niveau).
AW_SLIDE = &H40000 Fait "rouler" la fenêtre.

Si tu peux le faire, ce sera tjs un 'bonus' de plus dans ta source ;)

++
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
6 mars 2005 à 21:52
pour la source en question, c'est la mienne, publiée hier, donc logique qu'elle te soit inconnue ;)

en effet, je parle bien de découper une forme (en lui otant une couleur.... la rendre invisible), puis de rendre transparente (0 à 255) la forme "découpée"

mais la simple utilisation successive de "SetLayeredWindowAttribute" pour invisible, puis transparent (ou l'inverse), ne fonctionne pas.
(seul le dernier appel est pris en compte)

par contre, en utilisant "SetWindowLong" (comme détaillé au dernier post), çà fonctionne bien, mais la feuille n'apparaît plus dans la barre des tâches, ce qui est génant pour mon usage... :-\

une idée?
PCPT
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
6 mars 2005 à 21:28
Ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
d'accord je vois ce que tu veux dire et quelle est ta question. Tout d'abord je n'ai jamais entendu parler d'une telle source, mais je ne les connais pas toutes lol.
Par contre quand tu dis combiner les 2, tu veux dire "découper" la form avec une couleur PUIS rendre la form découpée transparente ? La c'est possible il suffit d'appliquer les api les une à la suite des autres.
Par contre si tu voulait dire rendre transparent la form mais pas au meme niveau sur toute sa surface, c'est transparent en fonction de la couleur.... et dans ce cas je n'ai jamais entendu parler d'une telle source mais je ne les connais pas toutes lol
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
6 mars 2005 à 14:12
Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Boolean
hWnd pour la form
crKey pour la couleur à rendre invisible
bAplha pour le degré de transparence
dwFlags pour le choix entre invisible et transparent

donc pour rendre une forme transparente (170/255)
et lui rendre totalement ses coins roses (&HFF00FF), je fais

Call SetWindowLong(Me.hwnd, GWL_EXSTYLE, WS_EX_LAYERED)
If Transparence = True Then
Call SetLayeredWindowAttributes(Me.hwnd, &HFF00FF, Alpha, &H3)
Else
Call SetLayeredWindowAttributes(Me.hwnd, &HFF00FF, 255, &H3)
End If

ça fonctionne, mais la fom n'est plus dans la barre des tâches, donc tout ce qui y est lié, ensuite,
bah ah marche pu !!!

si t'en as le temps et l'envie, j'ai mis la source ici
http://www.vbfrance.com/code.aspx?ID=29918

merci
PCPT
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
6 mars 2005 à 11:19
Euh à propos de la couleur spécifique à 100% je ne voit pas trop ce que tu veux dire...
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 mars 2005 à 22:18
Salut,
bon, j'ai un problème avec ce genre de sources, il y en a plein, à peu près toutes les mêmes. si j'ai bien compris le principe, on peut soit rendre la fenêtre transparente à un certain degré (0 à 255), soir une couleur spécifique à 100%.

y'a t'il une manière de cumuler les 2?
merci..

PCPT
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
3 nov. 2004 à 19:29
merci ;)
Dragonmaster Messages postés 126 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 3 avril 2009
3 nov. 2004 à 19:10
Euhhhh... je ne suis pas sûr...
L'effet est "plus visible" quand la fenêtre est maximisé.

Chapô pour l'effet de fondu !
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
3 nov. 2004 à 15:53
Bah c'est ce que j'ai dit, quand on fait FonduHide ça fait un petit flash, a mon avis c'est parce qu'on active la transparence. Parce que si la fenetre est déjà transparente avant ça ne le fait pas, ce qu'il faudrait c'est que la fenêtre soit tout le temps transparente mais le + opaque possible pendant l'utilisation, comme ça après on a pas à réactiver la transparence quand on ferme la fenetre,et donc pas de flash... (tu me comprend lol ?)
Dragonmaster Messages postés 126 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 3 avril 2009
3 nov. 2004 à 15:13
Ok, j'ai testé. La fenêtre clignote avant le la fermer en fondu. est ce normal ?
Rejoignez-nous