Form (mdi child) transparente

marc9101 Messages postés 8 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 10 octobre 2006 - 4 oct. 2006 à 15:02
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 2 nov. 2006 à 08:55
voila j'ai une question :
j'ai une form mdichild. Comment faire pour la rendre transparente?? cad, comment faire pour que seul le fond de la form soit invisible ?? mais que tous les bouttons et autres images .... soient visibles ??

11 réponses

VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009
4 oct. 2006 à 16:16
Cherche sur ce site il y a plein de sources qui traitent de transparence
0
marc9101 Messages postés 8 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 10 octobre 2006
4 oct. 2006 à 16:19
okay mais en fait j'ai déja cherché !! mais j'ai pas trouvé !! jvai y retourné alors !!
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 oct. 2006 à 17:05
salut,

suffit de choisir une couleur et de la rendre invisible

Option Explicit 
Const LWA_COLORKEY =  &H1 
Const LWA_ALPHA = &H2 
Const GWL_EXSTYLE = (-20) 
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 SetWindowLong Lib "user32" Alias _ 
    "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal _ 
    dwNewLong As Long) As Long 
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal _ 
    hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags _ 
    As Long) As Long 
'
Private Sub Form_Load() 
    Me.BackColor =  RGB (255, 0, 255) 

    Dim Ret As Long 
    Ret  = GetWindowLong(Me.hWnd, GWL_EXSTYLE) 
    Ret =  Ret Or WS_EX_LAYERED 

    SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret 
    SetLayeredWindowAttributes Me.hWnd, Me.BackColor, 128, LWA_COLORKEY 
End Sub  

<small> Coloration
syntaxique automatique [AFCK] </small>
       

++

PCPT  [AFCK]
<hr size ="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009
4 oct. 2006 à 17:07
Ha oui je ne me souvenais plus du nom de la fonction par contre je ne mérite pas "réponse acceptée", c'est PCPT!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
marc9101 Messages postés 8 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 10 octobre 2006
4 oct. 2006 à 17:52
ok merci beaucoup a vous 2 !!! j'essaie ca demain !!!
0
marc9101 Messages postés 8 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 10 octobre 2006
9 oct. 2006 à 20:51
merci beaucoup ca marche !!!
0
marc9101 Messages postés 8 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 10 octobre 2006
9 oct. 2006 à 20:55
petite rectification, ca marche pour une form classique, mais moi j'ai une mdi child !!! et ca ne marche pas !quelqu'un ne saurait il pas comment faire pour une mdichild svp ???
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
9 oct. 2006 à 21:08
salut,
ah oui en effet (c'est fou ce que je hais les mdi ^^)
bref, après modif j'ai réussi mais...
qu'est-ce que tu veux?.... voir le bureau? ou voir le fond de la fenêtre mère.....

bureau c'est ok (testé en mdi)

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
marc9101 Messages postés 8 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 10 octobre 2006
10 oct. 2006 à 18:43
nan je voudrais voir le fond de la mdi mère !!
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
11 oct. 2006 à 13:06
umm, peut-être en capturant le fond et en dessinant la capture selon la position de la fenêtre fille

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
2 nov. 2006 à 08:55
Mets ceci dans le code de la Form (pas dans celui de la Mdi)

Option Explicit
Private Declare Function CreateRectRgn Lib _
    "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, _
    ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CombineRgn Lib _
    "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, _
    ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Private Declare Function SetWindowRgn Lib _
    "user32" (ByVal hWnd As Long, ByVal hRgn As Long, _
    ByVal bRedraw As Boolean) As Long
Private Declare Function DeleteObject Lib _
    "gdi32" (ByVal hObject As Long) As Long


Private Const RGN_AND = 1
Private Const RGN_OR = 2
Private Const RGN_XOR = 3
Private Const RGN_DIFF = 4
Private Const RGN_COPY = 5


Private Sub Command2_Click()
End
End Sub


Private Sub Form_Activate()
    Dim rgnForm As Long, rgnCombined As Long
    Dim rgnControl As Long, x As Long
    Dim formWidth As Single, formHeight As Single
    Dim borderWidth As Single, titleHeight As Single
    Dim ctlLeft As Single, ctlTop As Single
    Dim ctlWidth As Single, ctlHeight As Single
    Dim ctl As Control
    borderWidth = (Me.Width - Me.ScaleWidth) / 2
    titleHeight = Me.Height - Me.ScaleHeight - borderWidth
    borderWidth = ScaleX(borderWidth, vbTwips, vbPixels)
    titleHeight = ScaleY(titleHeight, vbTwips, vbPixels)
    formWidth = ScaleX(Me.Width, vbTwips, vbPixels)
    formHeight = ScaleY(Me.Height, vbTwips, vbPixels)
    rgnForm = CreateRectRgn(0, 0, formWidth, formHeight)
    rgnCombined = CreateRectRgn(0, 0, 0, 0)
    x = CombineRgn(rgnCombined, rgnForm, rgnForm, RGN_DIFF)
    For Each ctl In Controls
        On Error Resume Next
        If TypeOf ctl.Container Is Form Then
            ctlLeft = ScaleX(ctl.Left, vbTwips, vbPixels) + borderWidth
            ctlTop = ScaleX(ctl.Top, vbTwips, vbPixels) + titleHeight
            ctlWidth = ScaleX(ctl.Width, vbTwips, vbPixels) + ctlLeft
            ctlHeight = ScaleX(ctl.Height, vbTwips, vbPixels) + ctlTop
            rgnControl = CreateRectRgn(ctlLeft, ctlTop, ctlWidth, ctlHeight)
            x = CombineRgn(rgnCombined, rgnCombined, rgnControl, RGN_OR)
        End If
    Next ctl
    SetWindowRgn hWnd, rgnCombined, True
    x = DeleteObject(rgnCombined)
    x = DeleteObject(rgnControl)
    x = DeleteObject(rgnForm)
End Sub


Et dis-moi si c'est ce que tu voulais !
Bien sur (pour y voir plus clair) : mets quelques contrôles (qui devront rester opaques) sur ta Form
Bonne journée




 
0
Rejoignez-nous