aInteresante! | Contenido para todo el mundo.
Bienvenido a nuestro foro!

Te invitamos a formar parte de nuestro gran equipo.
Puedes registrarte y empezar a crear temas y a hacer post.
Lo único que necesitas es:

* Tiempo para hacerlo
* Voluntad para querer ayudar a los demás

También puedes visitar nuestro blog:
http://ainteresante.wordpress.com
Buscar
 
 

Resultados por:
 


Rechercher Búsqueda avanzada

Conectarse

Recuperar mi contraseña

Visitas!

Dark Help
Seguinos en Facebook/Hazte fan:
Descargas:

AresGalaxy2.2.4

sb0t 5.27 (recomendado)
Extras

=><=
Webs Amigas
Visita nuestro blog:

Aplicar transparencia a un formulario

Ver el tema anterior Ver el tema siguiente Ir abajo

Aplicar transparencia a un formulario

Mensaje por Elmer Homero el Dom Mar 28, 2010 7:02 am

Muestra de como utilizar la función del API SetLayeredWindowAttributes que permite aplicar transparencia a un formulario.

Este ejemplo tiene una función propia llamada Aplicar_Transparencia, donde se le pasa como parámetro el hwnd del formulario al que le queremos aplicar un grado para hacerlo transparente, y en el segundo parámetro se le pasa un valor de tipo Byte que indica el valor o grado de transparencia a aplicar.




Nota:Nota: La función Api SetLayeredWindowAttributes, se encuentra en plataformas Windows 2000 en adelante, por lo tanto no funcionará en plataformas anteriores, como Windows 98 o Windows ME


Código fuente en un módulo .Bas:


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
 
Ahora colocar un control Scrollbar Horizontal llamado HScroll1 para graduar la transparencia:

Código:
 Private Sub Form_Load() 
 
    'Valores máximos y mínimos para el ScrollBar 
    HScroll1.Max = 255 
    HScroll1.Min = 50 
 
    ' Le establecemos un valor por defecto _ 
    a la barra apenas carga el form 
 
    HScroll1.Value = 150 
 
 End Sub 
 
 Private Sub HScroll1_Change() 
 
    'Llamamos a la función pasándole el handle del form _ 
    y el valor de la transparencia, que es el de la barra 
 
    Call Aplicar_Transparencia(Me.hWnd, CByte(HScroll1.Value)) 
 
 End Sub
avatar
Elmer Homero
Admin

Mensajes : 87
Puntos : 253
Reputación : 2
Fecha de inscripción : 12/01/2010

Ver perfil de usuario http://ainteresante.forosactivos.net

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.