1 Forms Transparentes. 24/5/2012, 23:41
RenanR
Membro Honorário I
Para tornarmos um form transparente necessitamos do seguinte código:
Crie um modulo com o seguinte código:
Depois, na inicialização do form:
O valor a indicar pode variar entre 0 e 255, onde 0 é o máximo de transparência.
Créditos: VbTuga.
Crie um modulo com o seguinte código:
- Código:
' Declaração de API's necessários
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 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
' Definição de constantes
Private Const GWL_EXSTYLE = (-20)
Private Const LWA_COLORKEY = &H1
Private Const LWA_ALPHA = &H2
Private Const ULW_COLORKEY = &H1
Private Const ULW_ALPHA = &H2
Private Const ULW_OPAQUE = &H4
Private Const WS_EX_LAYERED = &H80000
' Define o form como transparente
Public Sub MakeTransparent(ByVal hWnd As Long, ByVal bAlpha As Integer)
Dim msg As Long
' Ignora possíveis erros
On Error Resume Next
' Caso o valor seja inferior a 255 e superior
' a 0 aplica uma nova transparência
If bAlpha > 0 Or bAlpha < 255 Then
msg = GetWindowLong(hWnd, GWL_EXSTYLE)
msg = msg Or WS_EX_LAYERED
SetWindowLong hWnd, GWL_EXSTYLE, msg
SetLayeredWindowAttributes hWnd, 0, bAlpha, LWA_ALPHA
End If
End Sub
' Define o form com opaco
Public Sub MakeOpaque(ByVal hWnd As Long)
Dim msg As Long
' Ignora possíveis erros
On Error Resume Next
msg = GetWindowLong(hWnd, GWL_EXSTYLE)
msg = msg And Not WS_EX_LAYERED
SetWindowLong hWnd, GWL_EXSTYLE, msg
SetLayeredWindowAttributes hWnd, 0, 0, LWA_ALPHA
End Sub
Depois, na inicialização do form:
- Código:
Private Sub Form_Initialize()
MakeTransparent Me.hWnd, 150
End Sub
O valor a indicar pode variar entre 0 e 255, onde 0 é o máximo de transparência.
Créditos: VbTuga.