VB6 - Rendere trasparente un modulo
Iniziare
Ecco un breve esempio di come rendere trasparente un modulo in Visual Basic.Nota: è necessario includere una tavolozza di colori affinché funzioni.
In un modulo
Funzione dichiarazione privata GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As long, ByVal nIndex As Long) As LongFunzione di dichiarazione privata SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As long, ByVal nIndex As long, ByVal dwNewLong As Long) As Long
Funzione di dichiarazione privata SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bDefaut As Byte, ByVal dwFlags As Long) As Long
Const privato GWL_EXSTYLE As Long = (-20)
Const privata LWA_COLORKEY As Long = & H1
Const privato LWA_Defaut As Long = & H2
Const privato WS_EX_LAYERED As Long = & H80000
'
Trasparenza delle funzioni pubbliche (ByVal hWnd As Long, Opzionali ByVal Col As Long = vbBlack, _
Opzionale ByVal PcTransp As Byte = 255, Opzionale ByVal TrMode As Boolean = True) As Boolean
'Return: True se non ci sono errori.
'hWnd: hWnd della finestra per rendere trasparente
'Col: Colore da rendere trasparente se TrMode = False
'PcTransp: 0 Ã 255 >> 0 = trasparente -: - 255 = opaco
Dim DisplayStyle As Long
On Error GoTo Exit
VoirStyle = GetWindowLong (hWnd, GWL_EXSTYLE)
Se DisplayStyle (DisplayStyle o WS_EX_LAYERED) Quindi
DisplayStyle = (DisplayStyle o WS_EX_LAYERED)
Chiama SetWindowLong (hWnd, GWL_EXSTYLE, DisplayStyle)
Finisci se
Transparency = (SetLayeredWindowAttributes (hWnd, Col, PcTransp, IIf (TrMode, LWA_COLORKEY o LWA_Defaut, LWA_COLORKEY)) 0)
Uscita:
Se non Err.Number = 0 Then Err.Clear
Fine Funzione
Public Sub ActiveTransparency (M As Form, d As Boolean, F As Boolean, _
T_Transparency As Integer, Opzionale Color As Long)
Dim B As Boolean
Se d E F allora
'Rende trasparente il colore (qui il colore di sfondo della forma)
'in base al valore di T_Transparency
B = Trasparenza (M.hWnd, Colore, T_Transparency, False)
Altrimenti d allora
'Rende trasparente la forma, inclusi tutti i componenti
'in base al valore di T_Transparency
B = Trasparenza (M.hWnd, 0, T_Transparency, True)
Altro
'Ripristina la forma opaca.
B = Trasparenza (M.hWnd,, 255, True)
Finisci se
End Sub
Come usato in una forma
Private Sub Form_Load ()Dim i As Integer
'Es: tutto trasparente con rapporto 140/255
'ActiveTransparency Me, True, False, 140, Me.BackColor
'Es: forma componente trasparente, visibile in rapporto 140/255
'ActiveTransparency Me, True, True, 140, Me.BackColor
'Esempio mostra la degradazione della trasparenza del modulo
ActiveTransparency Me, True, False, 0
Me.Show
Per i = 0 a 255 Passaggio 3
ActiveTransparency Me, True, False, io
Me.Refresh
Avanti
End Sub