Je souhaiterais rendre transparent le fond d'un formulaire=20
sans que les composants du formulaire soient affect=E9s par=20
la transparence, comment faire ?
Je pr=E9cise que je sais rendre un formulaire enti=E8rement=20
transparent, composants y compris, ma question porte=20
justement sur la distinction de transparence entre les=20
deux.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
François Picalausa
Hello,
essaye ce bout de code, ici il ne rend que la form transparente et pas les contrôles qui sont dessus, a conditions que ceux ci ne soient pas rouges: 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
Me.BackColor = vbRed 'il faut une "vraie" couleur RGB et 'pas une couleur système SetLayeredWindowAttributes Me.hwnd, Me.BackColor, 0, LWA_COLORKEY
Dim NewLabel As Label
Set NewLabel = Me.Controls.Add("VB.Label", "LabelNonTransparent") NewLabel.Visible = True NewLabel.ForeColor = vbBlack NewLabel.Caption = "Texte non transparent" NewLabel.AutoSize = True NewLabel.Move 0, 0 End Sub
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Nicolas" a écrit dans le message de news:1c96001c452bb$bfbaf840$
Je souhaiterais rendre transparent le fond d'un formulaire sans que les composants du formulaire soient affectés par la transparence, comment faire ?
Je précise que je sais rendre un formulaire entièrement transparent, composants y compris, ma question porte justement sur la distinction de transparence entre les deux.
Hello,
essaye ce bout de code, ici il ne rend que la form transparente et pas les
contrôles qui sont dessus, a conditions que ceux ci ne soient pas rouges:
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
Me.BackColor = vbRed
'il faut une "vraie" couleur RGB et
'pas une couleur système
SetLayeredWindowAttributes Me.hwnd, Me.BackColor, 0, LWA_COLORKEY
Dim NewLabel As Label
Set NewLabel = Me.Controls.Add("VB.Label", "LabelNonTransparent")
NewLabel.Visible = True
NewLabel.ForeColor = vbBlack
NewLabel.Caption = "Texte non transparent"
NewLabel.AutoSize = True
NewLabel.Move 0, 0
End Sub
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Nicolas" <nicolasheurtevin@wanadoo.fr> a écrit dans le message de
news:1c96001c452bb$bfbaf840$a401280a@phx.gbl
Je souhaiterais rendre transparent le fond d'un formulaire
sans que les composants du formulaire soient affectés par
la transparence, comment faire ?
Je précise que je sais rendre un formulaire entièrement
transparent, composants y compris, ma question porte
justement sur la distinction de transparence entre les
deux.
essaye ce bout de code, ici il ne rend que la form transparente et pas les contrôles qui sont dessus, a conditions que ceux ci ne soient pas rouges: 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
Me.BackColor = vbRed 'il faut une "vraie" couleur RGB et 'pas une couleur système SetLayeredWindowAttributes Me.hwnd, Me.BackColor, 0, LWA_COLORKEY
Dim NewLabel As Label
Set NewLabel = Me.Controls.Add("VB.Label", "LabelNonTransparent") NewLabel.Visible = True NewLabel.ForeColor = vbBlack NewLabel.Caption = "Texte non transparent" NewLabel.AutoSize = True NewLabel.Move 0, 0 End Sub
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Nicolas" a écrit dans le message de news:1c96001c452bb$bfbaf840$
Je souhaiterais rendre transparent le fond d'un formulaire sans que les composants du formulaire soient affectés par la transparence, comment faire ?
Je précise que je sais rendre un formulaire entièrement transparent, composants y compris, ma question porte justement sur la distinction de transparence entre les deux.
Pascal B.
Salut,
(Si je me rappel bien) dans ce cas, le niveau de transparence ne fonctionne pas et de tout façon cette fonction n'est valable que pour XP et 2000 ! Non ?
Pascal B.
"François Picalausa" wrote in message news: | Hello, | | essaye ce bout de code, ici il ne rend que la form transparente et pas les | contrôles qui sont dessus, a conditions que ceux ci ne soient pas rouges: | 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 Const GWL_EXSTYLE = (-20) | Private Const WS_EX_LAYERED = &H80000 | Private Const WS_EX_TRANSPARENT = &H20& | Private Const LWA_ALPHA = &H2& | Private Const LWA_COLORKEY = &H1 | | Private Sub Form_Load() | Dim lOldStyle As Long | Dim bTrans As Byte ' The level of transparency (0 - 255) | | bTrans = 255 | lOldStyle = GetWindowLong(Me.hwnd, GWL_EXSTYLE) | SetWindowLong Me.hwnd, GWL_EXSTYLE, lOldStyle Or WS_EX_LAYERED | | Me.BackColor = vbRed | 'il faut une "vraie" couleur RGB et | 'pas une couleur système | SetLayeredWindowAttributes Me.hwnd, Me.BackColor, 0, LWA_COLORKEY | | Dim NewLabel As Label | | Set NewLabel = Me.Controls.Add("VB.Label", "LabelNonTransparent") | NewLabel.Visible = True | NewLabel.ForeColor = vbBlack | NewLabel.Caption = "Texte non transparent" | NewLabel.AutoSize = True | NewLabel.Move 0, 0 | End Sub | | -- | François Picalausa (MVP VB) | http://faq.vb.free.fr --- http://msdn.microsoft.com | http://apisvb.europe.webmatrixhosting.net | | "Nicolas" a écrit dans le message de | news:1c96001c452bb$bfbaf840$ | > Je souhaiterais rendre transparent le fond d'un formulaire | > sans que les composants du formulaire soient affectés par | > la transparence, comment faire ? | > | > Je précise que je sais rendre un formulaire entièrement | > transparent, composants y compris, ma question porte | > justement sur la distinction de transparence entre les | > deux. | |
Salut,
(Si je me rappel bien) dans ce cas, le niveau de transparence ne fonctionne pas et
de tout façon cette fonction n'est valable que pour XP et 2000 ! Non ?
Pascal B.
"François Picalausa" <fpicalausa@chez.com> wrote in message news:u96TK7vUEHA.1036@TK2MSFTNGP12.phx.gbl...
| Hello,
|
| essaye ce bout de code, ici il ne rend que la form transparente et pas les
| contrôles qui sont dessus, a conditions que ceux ci ne soient pas rouges:
| 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 Const GWL_EXSTYLE = (-20)
| Private Const WS_EX_LAYERED = &H80000
| Private Const WS_EX_TRANSPARENT = &H20&
| Private Const LWA_ALPHA = &H2&
| Private Const LWA_COLORKEY = &H1
|
| Private Sub Form_Load()
| Dim lOldStyle As Long
| Dim bTrans As Byte ' The level of transparency (0 - 255)
|
| bTrans = 255
| lOldStyle = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
| SetWindowLong Me.hwnd, GWL_EXSTYLE, lOldStyle Or WS_EX_LAYERED
|
| Me.BackColor = vbRed
| 'il faut une "vraie" couleur RGB et
| 'pas une couleur système
| SetLayeredWindowAttributes Me.hwnd, Me.BackColor, 0, LWA_COLORKEY
|
| Dim NewLabel As Label
|
| Set NewLabel = Me.Controls.Add("VB.Label", "LabelNonTransparent")
| NewLabel.Visible = True
| NewLabel.ForeColor = vbBlack
| NewLabel.Caption = "Texte non transparent"
| NewLabel.AutoSize = True
| NewLabel.Move 0, 0
| End Sub
|
| --
| François Picalausa (MVP VB)
| http://faq.vb.free.fr --- http://msdn.microsoft.com
| http://apisvb.europe.webmatrixhosting.net
|
| "Nicolas" <nicolasheurtevin@wanadoo.fr> a écrit dans le message de
| news:1c96001c452bb$bfbaf840$a401280a@phx.gbl
| > Je souhaiterais rendre transparent le fond d'un formulaire
| > sans que les composants du formulaire soient affectés par
| > la transparence, comment faire ?
| >
| > Je précise que je sais rendre un formulaire entièrement
| > transparent, composants y compris, ma question porte
| > justement sur la distinction de transparence entre les
| > deux.
|
|
(Si je me rappel bien) dans ce cas, le niveau de transparence ne fonctionne pas et de tout façon cette fonction n'est valable que pour XP et 2000 ! Non ?
Pascal B.
"François Picalausa" wrote in message news: | Hello, | | essaye ce bout de code, ici il ne rend que la form transparente et pas les | contrôles qui sont dessus, a conditions que ceux ci ne soient pas rouges: | 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 Const GWL_EXSTYLE = (-20) | Private Const WS_EX_LAYERED = &H80000 | Private Const WS_EX_TRANSPARENT = &H20& | Private Const LWA_ALPHA = &H2& | Private Const LWA_COLORKEY = &H1 | | Private Sub Form_Load() | Dim lOldStyle As Long | Dim bTrans As Byte ' The level of transparency (0 - 255) | | bTrans = 255 | lOldStyle = GetWindowLong(Me.hwnd, GWL_EXSTYLE) | SetWindowLong Me.hwnd, GWL_EXSTYLE, lOldStyle Or WS_EX_LAYERED | | Me.BackColor = vbRed | 'il faut une "vraie" couleur RGB et | 'pas une couleur système | SetLayeredWindowAttributes Me.hwnd, Me.BackColor, 0, LWA_COLORKEY | | Dim NewLabel As Label | | Set NewLabel = Me.Controls.Add("VB.Label", "LabelNonTransparent") | NewLabel.Visible = True | NewLabel.ForeColor = vbBlack | NewLabel.Caption = "Texte non transparent" | NewLabel.AutoSize = True | NewLabel.Move 0, 0 | End Sub | | -- | François Picalausa (MVP VB) | http://faq.vb.free.fr --- http://msdn.microsoft.com | http://apisvb.europe.webmatrixhosting.net | | "Nicolas" a écrit dans le message de | news:1c96001c452bb$bfbaf840$ | > Je souhaiterais rendre transparent le fond d'un formulaire | > sans que les composants du formulaire soient affectés par | > la transparence, comment faire ? | > | > Je précise que je sais rendre un formulaire entièrement | > transparent, composants y compris, ma question porte | > justement sur la distinction de transparence entre les | > deux. | |
François Picalausa
Hello,
(Si je me rappel bien) dans ce cas, le niveau de transparence ne fonctionne pas
Il fonctione.. pour la couleur sélectionnée uniquement mais il fonctionne.
de tout façon cette fonction n'est valable que pour XP et 2000 ! Non ?
Effectivement. Pour win 9x/Me, il faut jouer avec des regions comme montré sur mon site: http://www.chez.com/fpicalausa/programmation/VB/Code/regions.htm
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Pascal B." <pascbr{_AROBASE_}hotmail{_POINT_}com> a écrit dans le message de news:uJW%
Salut,
(Si je me rappel bien) dans ce cas, le niveau de transparence ne fonctionne pas et de tout façon cette fonction n'est valable que pour XP et 2000 ! Non ?
Pascal B.
"François Picalausa" wrote in message news:
Hello,
essaye ce bout de code, ici il ne rend que la form transparente et pas les contrôles qui sont dessus, a conditions que ceux ci ne soient pas rouges: 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
Me.BackColor = vbRed 'il faut une "vraie" couleur RGB et 'pas une couleur système SetLayeredWindowAttributes Me.hwnd, Me.BackColor, 0, LWA_COLORKEY
Dim NewLabel As Label
Set NewLabel = Me.Controls.Add("VB.Label", "LabelNonTransparent") NewLabel.Visible = True NewLabel.ForeColor = vbBlack NewLabel.Caption = "Texte non transparent" NewLabel.AutoSize = True NewLabel.Move 0, 0 End Sub
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Nicolas" a écrit dans le message de news:1c96001c452bb$bfbaf840$
Je souhaiterais rendre transparent le fond d'un formulaire sans que les composants du formulaire soient affectés par la transparence, comment faire ?
Je précise que je sais rendre un formulaire entièrement transparent, composants y compris, ma question porte justement sur la distinction de transparence entre les deux.
Hello,
(Si je me rappel bien) dans ce cas, le niveau de transparence ne
fonctionne pas
Il fonctione.. pour la couleur sélectionnée uniquement mais il fonctionne.
de tout façon cette fonction n'est valable que pour XP et 2000 ! Non ?
Effectivement.
Pour win 9x/Me, il faut jouer avec des regions comme montré sur mon site:
http://www.chez.com/fpicalausa/programmation/VB/Code/regions.htm
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Pascal B." <pascbr{_AROBASE_}hotmail{_POINT_}com> a écrit dans le
message de news:uJW%23SI3UEHA.584@TK2MSFTNGP09.phx.gbl
Salut,
(Si je me rappel bien) dans ce cas, le niveau de transparence ne
fonctionne pas et
de tout façon cette fonction n'est valable que pour XP et 2000 ! Non ?
Pascal B.
"François Picalausa" <fpicalausa@chez.com> wrote in message
news:u96TK7vUEHA.1036@TK2MSFTNGP12.phx.gbl...
Hello,
essaye ce bout de code, ici il ne rend que la form transparente et
pas les contrôles qui sont dessus, a conditions que ceux ci ne
soient pas rouges: 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
Me.BackColor = vbRed
'il faut une "vraie" couleur RGB et
'pas une couleur système
SetLayeredWindowAttributes Me.hwnd, Me.BackColor, 0, LWA_COLORKEY
Dim NewLabel As Label
Set NewLabel = Me.Controls.Add("VB.Label", "LabelNonTransparent")
NewLabel.Visible = True
NewLabel.ForeColor = vbBlack
NewLabel.Caption = "Texte non transparent"
NewLabel.AutoSize = True
NewLabel.Move 0, 0
End Sub
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Nicolas" <nicolasheurtevin@wanadoo.fr> a écrit dans le message de
news:1c96001c452bb$bfbaf840$a401280a@phx.gbl
Je souhaiterais rendre transparent le fond d'un formulaire
sans que les composants du formulaire soient affectés par
la transparence, comment faire ?
Je précise que je sais rendre un formulaire entièrement
transparent, composants y compris, ma question porte
justement sur la distinction de transparence entre les
deux.
(Si je me rappel bien) dans ce cas, le niveau de transparence ne fonctionne pas
Il fonctione.. pour la couleur sélectionnée uniquement mais il fonctionne.
de tout façon cette fonction n'est valable que pour XP et 2000 ! Non ?
Effectivement. Pour win 9x/Me, il faut jouer avec des regions comme montré sur mon site: http://www.chez.com/fpicalausa/programmation/VB/Code/regions.htm
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Pascal B." <pascbr{_AROBASE_}hotmail{_POINT_}com> a écrit dans le message de news:uJW%
Salut,
(Si je me rappel bien) dans ce cas, le niveau de transparence ne fonctionne pas et de tout façon cette fonction n'est valable que pour XP et 2000 ! Non ?
Pascal B.
"François Picalausa" wrote in message news:
Hello,
essaye ce bout de code, ici il ne rend que la form transparente et pas les contrôles qui sont dessus, a conditions que ceux ci ne soient pas rouges: 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
Me.BackColor = vbRed 'il faut une "vraie" couleur RGB et 'pas une couleur système SetLayeredWindowAttributes Me.hwnd, Me.BackColor, 0, LWA_COLORKEY
Dim NewLabel As Label
Set NewLabel = Me.Controls.Add("VB.Label", "LabelNonTransparent") NewLabel.Visible = True NewLabel.ForeColor = vbBlack NewLabel.Caption = "Texte non transparent" NewLabel.AutoSize = True NewLabel.Move 0, 0 End Sub
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Nicolas" a écrit dans le message de news:1c96001c452bb$bfbaf840$
Je souhaiterais rendre transparent le fond d'un formulaire sans que les composants du formulaire soient affectés par la transparence, comment faire ?
Je précise que je sais rendre un formulaire entièrement transparent, composants y compris, ma question porte justement sur la distinction de transparence entre les deux.