GS-Zone

Formulario Trasparente Ir al Indice

Moderadores: Moderadores de Argentum, Especialistas de Argentum, Especialistas de Programación

3
Este tema se encuentra cerrado.

Nota » 11 May 2009 17:30

Como hago un formulario trasparente :?:


gracias de antemano :D

Arandhel escribió:Soy nahue amigo de gonza.. che bldo te confundiste subiste todo el server!!! con codigos y todo bldo.. !!

OWNED
Xendrock Online
36
Destructor de Mentes [7]
Registrado: Años de membresíaAños de membresíaAños de membresíaAños de membresía
Ubicación: Buenos Aires
Mensajes: 822
Aportes: 8

Nota » 11 May 2009 17:38


Raka escribió:hola.. estaba armando un hack re lindo.. tipo como bots que generen usuarios y voten en una encuesta en un foro externo. :S

Imagen
Yo le hice un gol a GS
7
Dragon Ancestral [1]
Registrado: 5 Años de membresía!
Mensajes: 2553
Aportes: 6

Nota » 11 May 2009 17:48

Chily escribió:uu esto esta posteado 1000 veces, y por google hay un monton!

Primero tenes que declarar toda la api, y sus caracteristicas, en un modulo pones:

  1. Option Explicit
  2.  
  3. 'Declaración del Api SetLayeredWindowAttributes que establece _
  4.  la transparencia al form
  5.  
  6. Private Declare Function SetLayeredWindowAttributes Lib "user32" _
  7.                 (ByVal hWnd As Long, _
  8.                  ByVal crKey As Long, _
  9.                  ByVal bAlpha As Byte, _
  10.                  ByVal dwFlags As Long) As Long
  11.  
  12.  
  13. 'Recupera el estilo de la ventana
  14. Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
  15.                 (ByVal hWnd As Long, _
  16.                  ByVal nIndex As Long) As Long
  17.  
  18.  
  19. 'Declaración del Api SetWindowLong necesaria para aplicar un estilo _
  20.  al form antes de usar el Api SetLayeredWindowAttributes
  21.  
  22. Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
  23.                (ByVal hWnd As Long, _
  24.                 ByVal nIndex As Long, _
  25.                 ByVal dwNewLong As Long) As Long
  26.  
  27.  
  28. Private Const GWL_EXSTYLE = (-20)
  29. Private Const LWA_ALPHA = &H2
  30. Private Const WS_EX_LAYERED = &H80000
  31. 'Función para saber si formulario ya es transparente. _
  32.  Se le pasa el Hwnd del formulario en cuestión
  33.  
  34. Public Function Is_Transparent(ByVal hWnd As Long) As Boolean
  35. On Error Resume Next
  36.  
  37. Dim Msg As Long
  38.  
  39.     Msg = GetWindowLong(hWnd, GWL_EXSTYLE)
  40.        
  41.        If (Msg And WS_EX_LAYERED) = WS_EX_LAYERED Then
  42.           Is_Transparent = True
  43.        Else
  44.           Is_Transparent = False
  45.        End If
  46.  
  47.     If Err Then
  48.        Is_Transparent = False
  49.     End If
  50.  
  51. End Function
  52.  
  53. 'Función que aplica la transparencia, se le pasa el hwnd del form y un valor de 0 a 255
  54. Public Function Aplicar_Transparencia(ByVal hWnd As Long, _
  55.                                       Valor As Integer) As Long
  56.  
  57. Dim Msg As Long
  58.  
  59. On Error Resume Next
  60.  
  61. If Valor < 0 Or Valor > 255 Then
  62.    Aplicar_Transparencia = 1
  63. Else
  64.    Msg = GetWindowLong(hWnd, GWL_EXSTYLE)
  65.    Msg = Msg Or WS_EX_LAYERED
  66.    
  67.    SetWindowLong hWnd, GWL_EXSTYLE, Msg
  68.    
  69.    'Establece la transparencia
  70.    SetLayeredWindowAttributes hWnd, 0, Valor, LWA_ALPHA
  71.  
  72.    Aplicar_Transparencia = 0
  73.  
  74. End If
  75.  
  76.  
  77. If Err Then
  78.    Aplicar_Transparencia = 2
  79. End If
  80.  
  81. End Function



Una vez que hiciste esto, lo unico que tenes que usar es:

  1. Call Aplicar_Transparencia(Me.hWnd, CByte(EL VALOR))

EL VALOR lo reemplazas por cualquier numero entre 0 y 255
Eso puede ir en cualquier lado, si queres que siempre esta asi en el form_load aplicas eso. La transparencia solo puede ser entre 0 y 255

EJEMPLO:
en el formulario agregas un slider, y pones esto en el formulario:
  1. Private Sub Form_Load()
  2. Slider1.Max = 255
  3. Slider1.Min = 0
  4. Slider1.Value = 150
  5. End Sub
  6.  
  7. Private Sub slider1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  8. Call Aplicar_Transparencia(Me.hWnd, CByte(Slider1.Value))
  9. End Sub


espero que esto te sriva



muchas gracias :D


ahora lo pruebo =D

Arandhel escribió:Soy nahue amigo de gonza.. che bldo te confundiste subiste todo el server!!! con codigos y todo bldo.. !!

OWNED
Xendrock Online
36
Destructor de Mentes [7]
Registrado: Años de membresíaAños de membresíaAños de membresíaAños de membresía
Ubicación: Buenos Aires
Mensajes: 822
Aportes: 8

Este tema se encuentra cerrado.

Volver a AO 0.12.x

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados