Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Responsable Visual Basic

    Avatar de bbil
    Profil pro
    Inscrit en
    juin 2003
    Messages
    12 907
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Ariège (Midi Pyrénées)

    Informations forums :
    Inscription : juin 2003
    Messages : 12 907
    Points : 21 902
    Points
    21 902

    Par défaut [Sources][VBA] Transparence de fenêtre

    a fonction API SetLayeredWindowAttributes, permet de modifier la transparence
    des fenêtres windows ..

    déclaration des fonctions à mettre dans un module standard:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    '
    ' APIs gestion des fenêtres transparentes
    '
    Public Const GWL_EXSTYLE As Long = (-20)
    Public Const WS_EX_LAYERED As Long = &H80000
    Public Const LWA_COLORKEY As Long = &H1
    Public Const LWA_ALPHA As Long = &H2
    Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" ( _
                     ByVal hwnd As Long, _
                     ByVal nIndex As Long) As Long
     
    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
     
    Public Declare Function SetLayeredWindowAttributes Lib "user32" _
    (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Long, ByVal dwFlags As Long) As Long
     
    ' Pour Excel ou Word, FindWindow.. afin de déterminer l'handle de la fenêtre
     
    Public Declare Function FindWindowA Lib "user32" _
            (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

    rendre une fenêtre transparante

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Private Sub UserForm_Initialize()
        Dim MeHwnd As Long
        'Recupere le handle de la fenêtre
         MeHwnd = FindWindowA(vbNullString, Me.Caption)
     
        'Rajoute l'attribut transparent à la fenêtre..
        SetWindowLong MeHwnd, GWL_EXSTYLE, _
        GetWindowLong(MeHwnd, GWL_EXSTYLE) Or WS_EX_LAYERED
     
        'Definie la transparence de la fenêtre
        '125 = Taux de transparence de 0 à 255
        SetLayeredWindowAttributes MeHwnd, 0, 125, LWA_ALPHA
     
    End Sub
    SetLayeredWindowAttributes permet aussi de rendre une couleur transparente :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub UserForm_Initialize()
        Dim MeHwnd As Long
        'Recupere le handle de la fenêtre
         MeHwnd = FindWindowA(vbNullString, Me.Caption)
     
        'Rajoute l'attribut transparent à la fenêtre..
        SetWindowLong MeHwnd, GWL_EXSTYLE, _
        GetWindowLong(MeHwnd, GWL_EXSTYLE) Or WS_EX_LAYERED
         Me.BackColor = vbBlue 'Passe la couleur de fond en bleu avant de la
        'rendre tansparante
        SetLayeredWindowAttributes MeHwnd, vbBlue, 0, LWA_COLORKEY
     
    End Sub
    ci-joint un exemple sous excel 2000
    Fichiers attachés Fichiers attachés

  2. #2
    Responsable Visual Basic
    Avatar de ThierryAIM
    Homme Profil pro Thierry
    Inscrit en
    septembre 2002
    Messages
    3 672
    Détails du profil
    Informations personnelles :
    Nom : Homme Thierry
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2002
    Messages : 3 672
    Points : 7 775
    Points
    7 775

    Par défaut

    la transparence d'une form est déjà dans la FAQ VB

    http://vb.developpez.com/faq/?page=Form#transparence

    Je peux compléter avec la transparence d'une couleur
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

    MioSkins.org : le site de référence pour GPS et PDA Mitac MIO
    iPHONIX.fr : le must francophone des infos pour iPhone, iPad, ...

  3. #3
    Invité de passage
    Lycéen
    Inscrit en
    décembre 2012
    Messages
    2
    Détails du profil
    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : décembre 2012
    Messages : 2
    Points : 2
    Points
    2

    Par défaut Changer la couleur transparente

    Bonjour, je voulais savoir comment je peux changer la transparence d'une couleur à 60% au lieu de ce que l'exemple montre qui est à la pleine transparence ou 0. merci!

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ' Rendre invisible une couleur
    Private Sub CdbJaune_Click()
      ' Pour mémoire vbYellow = &Hffff& = 65535
      SetLayeredWindowAttributes MeHwnd, vbYellow, 0, LWA_COLORKEY
    End Sub
    Private Sub CdeBleu_Click()
      'Pour mémoire : vbBlue = &HFF0000
      SetLayeredWindowAttributes MeHwnd, vbBlue, 0, LWA_COLORKEY
    End Sub

  4. #4
    Rédacteur/Modérateur

    Avatar de Philippe JOCHMANS
    Homme Profil pro Philippe JOCHMANS
    Développeur informatique
    Inscrit en
    mai 2005
    Messages
    19 096
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe JOCHMANS
    Âge : 46
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : mai 2005
    Messages : 19 096
    Points : 42 128
    Points
    42 128

    Par défaut

    Bonjour

    Un classeur en démonstration : Comment appliquer une transparence dans un userform ?

    Philippe
    Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
    Vous pouvez consulter mes articles sur Access et PowerPoint

    Si vous avez des c'est peut-être moi, car vous postez un fichier en pièce jointe sans explications.

  5. #5
    Invité de passage
    Lycéen
    Inscrit en
    décembre 2012
    Messages
    2
    Détails du profil
    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : décembre 2012
    Messages : 2
    Points : 2
    Points
    2

    Par défaut

    Bonjour et merci pour le lien. Oui, je suis en train de rendre le fond transparent userform MAIS je veux que tous les contrôles pour ne pas être transparent. Par exemple de l'OP-ce que cela en utilisant une couleur, mais elle rend totalement transparent et je veux seulement 60% transparent.

    Rappel ... Notez, je voulais juste le fond userform transparente à 60%, puis à tous ses contrôles ne pas être transparent.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •