Templo RPG Maker
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir para baixo  Mensagem [Página 1 de 1]

1Forms Transparentes. Empty Forms Transparentes. 24/5/2012, 23:41

RenanR

RenanR
Membro Honorário I
Membro Honorário I
Para tornarmos um form transparente necessitamos do seguinte código:
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.

Ver o tópico anterior Ver o tópico seguinte Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos