Ajouter de la semi transparence aux feuilles vb

5/5 (13 avis)

Snippet vu 4 930 fois - Téléchargée 43 fois

Contenu du snippet

Grâce à ce code, on peut modifier la transparence d'une feuile de 0 à 100%. Ne marche que sous Windows 2000, XP, ... et suivants.
ET CA MARCHE !
Valeur de alpha = 255 >> tout visible
Valeur de alpha = 0 >> invisible

A mettre dans un module.

Source / Exemple :


Option Explicit

Global Const WS_EX_LAYERED = &H80000
Global Const LWA_COLORKEY = &H1
Global Const LWA_ALPHA = &H2
Global Const GWL_EXSTYLE = (-20)

Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Boolean
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long

Sub ActiveTransparence(Fenêtre As Form, Optional ByVal AlphaInit As Byte = 255)
    SetWindowLong Fenêtre.hWnd, GWL_EXSTYLE, GetWindowLong(Fenêtre.hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED
    ChangeTransparence Fenêtre, AlphaInit
End Sub

Sub ChangeTransparence(Fenêtre As Form, ByVal Alpha As Byte)
    SetLayeredWindowAttributes Fenêtre.hWnd, 0, Alpha, LWA_ALPHA
End Sub

Sub DésactiveTransparence(Fenêtre As Form)
    SetWindowLong Fenêtre.hWnd, GWL_EXSTYLE, GetWindowLong(Fenêtre.hWnd, GWL_EXSTYLE) - WS_EX_LAYERED
End Sub

Conclusion :


Un conseil : ne laissez pas activé la transparence si elle ne sert pas, car cela utilise plus de mémoire !

A voir également

Ajouter un commentaire Commentaires
cs_Benz Messages postés 196 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 7 juin 2007
24 févr. 2005 à 12:07
Salut Raph22,

Excellent ce code, mais existe il un moyen de ne rendre que la feuille translucide, et pas les contrôles ? Si quelqu'un à un tuyaux...

Merci
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
9 janv. 2004 à 22:10
j'ai un truc a dire :
dans un de mes progs j'ai mis ça et pis quand j'active la transparence (sous XP) tout marche mais en désacivant (ou même des fois en activant), la fenêtre inverse tout !!
les boutons, les images, les labels, les coordonées de la souris... tou quoi
et avec une form retournée mon prog il va pas loin

alors je pense qu'il ya peut etre un paramêtre dans l'appel des fonctions qu'il faut changer ?
bon je dis ça mais c'est peut être un autre truc du prog qui bug mais ça m'étonnerai car c'est vraiment au moment ou la transparence entre en jeu que le prog bug.

bon sinon c'est une source excellente, et je vois que on l'a mise à jour donc je vais regarder ce qui a changer pour voir si ça enlève mon bug.

a+ MadMatt
cs_Thorn Messages postés 7 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 9 décembre 2005
26 oct. 2003 à 20:12
Sa déchire!!!
je te remercie pour se p'tit code(je me détache des dernier messages..mais bon..)
c'est vrai qui'l m'est bien utile ton code!
Raph22 Messages postés 4 Date d'inscription vendredi 12 juillet 2002 Statut Membre Dernière intervention 27 juillet 2005
9 janv. 2003 à 23:17
Eh oui !!!!!!!
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
9 janv. 2003 à 22:25
niveau 3 ! et bah lol !
en passant, il y a une proprietés de la feuille pour ca en vb.net maintenant :)
Afficher les 13 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.