Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Rendere un form leggermente trasparente in vb6
Forum - Visual Basic 6 - Rendere un form leggermente trasparente in vb6

Avatar
meno93 (Normal User)
Rookie


Messaggi: 33
Iscritto: 08/01/2008

Segnala al moderatore
Postato alle 15:31
Martedì, 08/01/2008
Salve sono un ragazzo di 14 anni che pratica la programmazione da due anni anche se per un po ho smesso...adesso sto ricominciando a programmare e mi interesserebbe realizzare un form leggermente trasparente...come si fa? attendo una risposta.grazie anticipatamente

PM Quote
Avatar
BytE-FucK (Normal User)
Pro


Messaggi: 171
Iscritto: 09/10/2007

Segnala al moderatore
Postato alle 15:55
Martedì, 08/01/2008
Ciao meno e benvenuto nel forum :k:

Per la trasparenza crea un modulo e inserisci :

Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2.  
  3. Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
  4. Private Declare Function UpdateLayeredWindow Lib "user32" (ByVal hWnd As Long, ByVal hdcDst As Long, pptDst As Any, psize As Any, ByVal hdcSrc As Long, pptSrc As Any, crKey As Long, ByVal pblend As Long, ByVal dwFlags As Long) As Long
  5. Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  6. Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  7.  
  8. Private Const GWL_EXSTYLE = (-20)
  9. Private Const LWA_COLORKEY = &H1
  10. Private Const LWA_ALPHA = &H2
  11. Private Const ULW_COLORKEY = &H1
  12. Private Const ULW_ALPHA = &H2
  13. Private Const ULW_OPAQUE = &H4
  14. Private Const WS_EX_LAYERED = &H80000
  15.  
  16. Public Function isTransparent(ByVal hWnd As Long) As Boolean
  17. On Error Resume Next
  18. Dim Msg As Long
  19. Msg = GetWindowLong(hWnd, GWL_EXSTYLE)
  20. If (Msg And WS_EX_LAYERED) = WS_EX_LAYERED Then
  21.   isTransparent = True
  22. Else
  23.   isTransparent = False
  24. End If
  25. If Err Then
  26.   isTransparent = False
  27. End If
  28. End Function
  29.  
  30. Public Function MakeTransparent(ByVal hWnd As Long, Perc As Integer) As Long
  31. Dim Msg As Long
  32. On Error Resume Next
  33. If Perc < 0 Or Perc > 255 Then
  34.   MakeTransparent = 1
  35. Else
  36.   Msg = GetWindowLong(hWnd, GWL_EXSTYLE)
  37.   Msg = Msg Or WS_EX_LAYERED
  38.   SetWindowLong hWnd, GWL_EXSTYLE, Msg
  39.   SetLayeredWindowAttributes hWnd, 0, Perc, LWA_ALPHA
  40.   MakeTransparent = 0
  41. End If
  42. If Err Then
  43.   MakeTransparent = 2
  44. End If
  45. End Function
  46.  
  47. Public Function MakeOpaque(ByVal hWnd As Long) As Long
  48. Dim Msg As Long
  49. On Error Resume Next
  50. Msg = GetWindowLong(hWnd, GWL_EXSTYLE)
  51. Msg = Msg And Not WS_EX_LAYERED
  52. SetWindowLong hWnd, GWL_EXSTYLE, Msg
  53. SetLayeredWindowAttributes hWnd, 0, 0, LWA_ALPHA
  54. MakeOpaque = 0
  55. If Err Then
  56.   MakeOpaque = 2
  57. End If
  58. End Function



Poi per renderlo trasparente fin dall'inizio :

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form_Load()
  2. MakeTransparent Me.hWnd, VALORE da 0 a 255
  3. End Sub



Dove se lo vuoi un po trasparente come valore inserisci tipo 200..regolati tu ;)

PM Quote
Avatar
meno93 (Normal User)
Rookie


Messaggi: 33
Iscritto: 08/01/2008

Segnala al moderatore
Postato alle 17:38
Martedì, 08/01/2008
grazie davvero..:asd::asd::asd::k:
funziona perfettamente

PM Quote
Avatar
BytE-FucK (Normal User)
Pro


Messaggi: 171
Iscritto: 09/10/2007

Segnala al moderatore
Postato alle 19:03
Martedì, 08/01/2008
Di nulla...
Alla prossima :k:

PM Quote