IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Probléme de transparence dans le code.


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Points : 198
    Points
    198
    Par défaut Probléme de transparence dans le code.
    Bonjour à tous,
    Sa fait trois heures que je chipote sur ce code et j'arrive pas à trouvé le noeud du probléme.

    Dans mon module on trouve:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Option Explicit
     
    'Déclaration des fonctions de l'API Windows nécessaires a ce programme
    Public Declare Function SetLayeredWindowAttributes Lib "user32.dll" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags 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 GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Public Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As Rect) As Long
    Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
    Public Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
    Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
     
    Public Const WS_CHILD = &H40000000
    Public Const GWL_STYLE = (-16)
    Public Const GWL_EXSTYLE = (-20)
    Public Const LWA_COLORKEY = &H1
    Public Const LWA_ALPHA = &H2
    Public Const WS_EX_LAYERED = &H80000
    Public Const SWP_FRAMECHANGED = &H20
     
    Public Function WndSetOpacity(ByVal hwnd As Long, Optional ByVal crKey As Long = &H8000000F, Optional ByVal Alpha As Byte = 255, Optional ByVal ByAlpha As Boolean = False) As Boolean
     
        Dim ExStyle As Long
        ExStyle = GetWindowLong(MainApp.hwnd, GWL_EXSTYLE)
        If ExStyle <> (ExStyle Or WS_EX_LAYERED) Then
            ExStyle = (ExStyle Or WS_EX_LAYERED)
            Call SetWindowLong(MainApp.hwnd, GWL_EXSTYLE, ExStyle)
        End If
        WndSetOpacity = (SetLayeredWindowAttributes(MainApp.hwnd, &H8000000F, 100, IIf(ByAlpha, LWA_ALPHA, LWA_COLORKEY)) <> 0)
    End Function
    Je remplace la valeur crKey par une couleur, je passe ByAlpha en False, Malgré ça il met toute ma FORM en transparence. Ce que je désire c'est seulement la couleur que j'ai défenie.

    Merci à vous tous.

  2. #2
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    il nous manque l'appel à WndSetOpacity dans le code fourni
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Function WndSetOpacity(ByVal hwnd As Long, Optional ByVal crKey As Long = &H8000000F, Optional ByVal Alpha As Byte = 255, Optional ByVal ByAlpha As Boolean = False) As Boolean
    
    Dim ExStyle As Long
    ExStyle = GetWindowLong(MainApp.hwnd, GWL_EXSTYLE)
    If ExStyle <> (ExStyle Or WS_EX_LAYERED) Then
    ExStyle = (ExStyle Or WS_EX_LAYERED)
    Call SetWindowLong(MainApp.hwnd, GWL_EXSTYLE, ExStyle)
    End If
    WndSetOpacity = (SetLayeredWindowAttributes(MainApp.hwnd, &H8000000F, 100, IIf(ByAlpha, LWA_ALPHA, LWA_COLORKEY)) <> 0)
    End Function
    Tu dois utiliser le hwnd transmis à la fonction
    Ce qui est en rouge est en trop
    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

  3. #3
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Sinon sur mon site tu trouve un module tout près, juste à intégrer dans ton projet et à appeler la fonction avec les bons paramètres (regarde mon profil pour avoir l'adresse de mon site)
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

Discussions similaires

  1. Problème d'asm dans mon code C
    Par Truffo dans le forum C
    Réponses: 4
    Dernier message: 11/06/2007, 14h44
  2. Problème try-catch dans mon code
    Par little pepito dans le forum Langage
    Réponses: 7
    Dernier message: 11/06/2007, 12h22
  3. Réponses: 16
    Dernier message: 18/10/2006, 22h52
  4. Problème de paramètres dans mon code javascript
    Par cocacollection dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 15/03/2006, 10h53
  5. Problème avec Between dans un code
    Par Sendo dans le forum Access
    Réponses: 4
    Dernier message: 02/10/2005, 18h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo