Ajouter de la semi transparence aux feuilles vb

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 696 fois - Téléchargée 42 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

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
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009

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

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

Eh oui !!!!!!!
hvb
Messages postés
939
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
27 janvier 2009
1
niveau 3 ! et bah lol !
en passant, il y a une proprietés de la feuille pour ca en vb.net maintenant :)

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.