¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.


Todo sobre AO
 
ÍndiceÚltimas imágenesBuscarRegistrarseConectarse

 

 Transparencias.

Ir abajo 
AutorMensaje
Agus
Admin



Mensajes : 69
Fecha de inscripción : 01/07/2008

Transparencias. Empty
MensajeTema: Transparencias.   Transparencias. EmptySáb Ago 23, 2008 6:07 am

Agregar un modulo con esto:
Código:

Option Explicit

'Declaración del Api SetLayeredWindowAttributes que establece _
la transparencia al form

Private Declare Function SetLayeredWindowAttributes Lib "user32" _
                (ByVal hWnd As Long, _
                ByVal crKey As Long, _
                ByVal bAlpha As Byte, _
                ByVal dwFlags As Long) As Long


'Recupera el estilo de la ventana
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
                (ByVal hWnd As Long, _
                ByVal nIndex As Long) As Long


'Declaración del Api SetWindowLong necesaria para aplicar un estilo _
al form antes de usar el Api SetLayeredWindowAttributes

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
              (ByVal hWnd As Long, _
                ByVal nIndex As Long, _
                ByVal dwNewLong As Long) As Long


Private Const GWL_EXSTYLE = (-20)
Private Const LWA_ALPHA = &H2
Private Const WS_EX_LAYERED = &H80000
'Función para saber si formulario ya es transparente. _
Se le pasa el Hwnd del formulario en cuestión

Public Function Is_Transparent(ByVal hWnd As Long) As Boolean
On Error Resume Next

Dim msg As Long

    msg = GetWindowLong(hWnd, GWL_EXSTYLE)
     
      If (msg And WS_EX_LAYERED) = WS_EX_LAYERED Then
          Is_Transparent = True
      Else
          Is_Transparent = False
      End If

    If Err Then
      Is_Transparent = False
    End If

End Function

'Función que aplica la transparencia, se le pasa el hwnd del form y un valor de 0 a 255
Public Function Aplicar_Transparencia(ByVal hWnd As Long, _
                                      Valor As Integer) As Long

Dim msg As Long

On Error Resume Next

If Valor < 0 Or Valor > 255 Then
  Aplicar_Transparencia = 1
Else
  msg = GetWindowLong(hWnd, GWL_EXSTYLE)
  msg = msg Or WS_EX_LAYERED
 
  SetWindowLong hWnd, GWL_EXSTYLE, msg
 
  'Establece la transparencia
  SetLayeredWindowAttributes hWnd, 0, Valor, LWA_ALPHA

  Aplicar_Transparencia = 0

End If


If Err Then
  Aplicar_Transparencia = 2
End If

End Function

'Para aplicar: Call Aplicar_Transparencia(Me.hWnd, CByte(210))
Volver arriba Ir abajo
https://recompilacionao.forosactivos.com
 
Transparencias.
Volver arriba 
Página 1 de 1.

Permisos de este foro:No puedes responder a temas en este foro.
 :: Argentum Online :: jijijijijiij-
Cambiar a: