Fenêtres transparentes w2k+

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 807 fois - Téléchargée 40 fois

Contenu du snippet

Fonction permettant de rendre une fenêtre transparente.
Malheureusement cet API n'est disponible que sur Windows 2000 et plus mais le résultat est là.
Il est même possible d'appliquer cette fonction sur la barre de tâche ou une fenêtre externe à votre application à l'aide de l'API FindWindowEx...

Source / Exemple :


'Fonctionne uniquement sur Windows 2000 et plus

'Utilisation :
'Dans l'événement Form_Load mettre :
'WndSetOpacity hWnd, , 125 (rend la fenêtre translucide à 50%
'WndSetOpacity hWnd, vbBlack, ,False (rend la couleur noir transparente)

Private Const GWL_EXSTYLE = (-20)
Private Const LWA_COLORKEY = &H1
Private Const LWA_ALPHA = &H2
Private Const WS_EX_LAYERED = &H80000
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32.dll" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Public Function WndSetOpacity(ByVal hWnd As Long, Optional ByVal crKey As Long = vbBlack, Optional ByVal Alpha As Byte = 255, Optional ByVal ByAlpha As Boolean = True) As Boolean
'Return : True si il n'y a pas eu d'erreur.
'hWnd  : hWnd de la fenêtre à rendre transparente
'crKey : Couleur à rendre transparente si ByAlpha=False (utiliser soit les constantes vb:vbWhite ou en hexa:&HFFFFFF)
'Alpha : 0-255 0=transparent 255=Opaque si ByAlpha=true (défaut)
  Dim ExStyle As Long
  ExStyle = GetWindowLong(hWnd, GWL_EXSTYLE)
  If ExStyle <> (ExStyle Or WS_EX_LAYERED) Then
    ExStyle = (ExStyle Or WS_EX_LAYERED)
    Call SetWindowLong(hWnd, GWL_EXSTYLE, ExStyle)
  End If
  WndSetOpacity = (SetLayeredWindowAttributes(hWnd, crKey, Alpha, IIf(ByAlpha, LWA_ALPHA, LWA_COLORKEY)) <> 0)
End Function

Conclusion :


Je n'aurait pas penser à utiliser cet API sans la question de Clem dans le forum...

A voir également

Ajouter un commentaire

Commentaires

Messages postés
8
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
2 octobre 2007

le version á testé á win98 ?
Messages postés
102
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
9 septembre 2003

10 !
Messages postés
102
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
9 septembre 2003

C FORT !
Messages postés
30
Date d'inscription
samedi 14 octobre 2000
Statut
Membre
Dernière intervention
8 mai 2004

Ouahooooooooo Super cool, je cherche à faire depuis un moment !!
Dommage pour ceux qui n'ont pas un Win 2000 ou plus !!! hihihi
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014

Wouais vraiment cool, mais c'est domage que sa marhce pas sur toute les version de windaube.

A++
Afficher les 6 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.