Página 1 de 1

Modulo de Transparencia [VB6]

Publicado: 17 Nov 2009, 20:15
por The Swash
Modulo.bas:
' 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 FormTransparence(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[/code]

[b]Manera de Usarlo:[/b]
Si Adicionas Botones:
[code]Private Sub cmdButtonTrans_Click()
FormTransparence Me.hwnd, 180
End Sub[/code]

[code]Private Sub cmdButtonNormal_Click()
FormTransparence Me.hwnd, 250
End Sub
Creditos: style
ProfessionalCode

Re: Modulo de Transparencia [VB6]

Publicado: 19 Nov 2009, 03:32
por K-0Z
voy a ver si me sirve, gracias

Re: Modulo de Transparencia [VB6]

Publicado: 08 Dic 2009, 01:02
por LuisN2
Probado, va a la perfección , pero al dejarlo a transparencia 250 aun es un poco transparente

Re: Modulo de Transparencia [VB6]

Publicado: 08 Dic 2009, 12:27
por STX
Funciona!!!
LuisN2 escribió: pero al dejarlo a transparencia 250 aun es un poco transparente
No, 250 es el numero maximo

Salu2

Re: Modulo de Transparencia [VB6]

Publicado: 08 Dic 2009, 12:35
por LuisN2
Seritx escribió:Funciona!!!
LuisN2 escribió: pero al dejarlo a transparencia 250 aun es un poco transparente
No, 250 es el numero maximo

Salu2
Ya lo sé, prubalo y fijate bien, yo al menos veo un poco (casi nada) transparente.

Re: Modulo de Transparencia [VB6]

Publicado: 08 Dic 2009, 13:30
por STX
tienes razon LuisN2 (ojo de halcon? ) pero es muy poco

Salu2

Re: Modulo de Transparencia [VB6]

Publicado: 08 Dic 2009, 13:42
por LuisN2
Seritx escribió:tienes razon LuisN2 (ojo de halcon? ) pero es muy poco

Salu2
Ya, se que es muy poco, pero es un detalle que yo ví, y que quizás alguien vea, pero si de verdad vamos a usar esto, se lo pondremos siempre fijo, sin variar, asique no es problema.