Ask a question »

VB6 - Making a form transparent

May 2016

A program in VB6 or Visual Basic 6 can be used to make a form transparent in VB6. Some knowledge of programming concepts and languages like Visual Basic is required, to write programs in VB6. Basic knowledge of subroutines, if-else loops and Visual Basic functions are necessary to write programs in VB6. A program to make a form transparent in VB6 can be written by using VB6 functions like the SetLayeredWindowAttributes function and bit operations, in a user-defined subroutine. This user-defined subroutine will be called a form event, depending when the form loads.

Getting started

Here is a brief example of how to make a form transparent in Visual Basic.

Note: A color palette must be included for this to work.

In a module

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long     
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long     
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bDefaut As Byte, ByVal dwFlags As Long) As Long     

Private Const GWL_EXSTYLE       As Long = (-20)     
Private Const LWA_COLORKEY      As Long = &H1     
Private Const LWA_Defaut         As Long = &H2     
Private Const WS_EX_LAYERED     As Long = &H80000     

Public Function Transparency(ByVal hWnd As Long, Optional ByVal Col As Long = vbBlack, _     
    Optional ByVal PcTransp As Byte = 255, Optional ByVal TrMode As Boolean = True) As Boolean     
' Return : True if there is no error.     
' hWnd   : hWnd of the window to make transparent     
' Col : Color to make transparent if TrMode=False     
' PcTransp  : 0 Ã  255 >> 0 = transparent  -:- 255 = Opaque     
Dim DisplayStyle As Long     
    On Error GoTo Exit     
    VoirStyle = GetWindowLong(hWnd, GWL_EXSTYLE)     
    If DisplayStyle<> (DisplayStyle Or WS_EX_LAYERED) Then     
        DisplayStyle = (DisplayStyle Or WS_EX_LAYERED)     
        Call SetWindowLong(hWnd, GWL_EXSTYLE, DisplayStyle)     
    End If     
    Transparency = (SetLayeredWindowAttributes(hWnd, Col, PcTransp, IIf(TrMode, LWA_COLORKEY Or LWA_Defaut, LWA_COLORKEY)) <> 0)     
    If Not Err.Number = 0 Then Err.Clear     
End Function     

Public Sub ActiveTransparency(M As Form, d As Boolean, F As Boolean, _     
     T_Transparency As Integer, Optional Color As Long)     
Dim B As Boolean     
        If d And F Then     
        'Makes color (here the background color of the shape) transparent     
        'upon value of T_Transparency     
            B = Transparency(M.hWnd, Color, T_Transparency, False)     
        ElseIf d Then     
            'Makes form, including all components, transparent     
            'upon value of T_Transparency     
            B = Transparency(M.hWnd, 0, T_Transparency, True)     
            'Restores the form opaque.     
            B = Transparency(M.hWnd,, 255, True)     
        End If     
End Sub

As used in a form

Private Sub Form_Load()     
Dim i As Integer     
    'Ex: all transparent at ratio 140/255     
    'ActiveTransparency Me, True, False, 140, Me.BackColor     
    'Ex: Form transparent, visible component at ratio 140/255     
    'ActiveTransparency Me, True, True, 140, Me.BackColor     
    'Example display the form transparency degradation     
    ActiveTransparency Me, True, False, 0     
    For i = 0 To 255 Step 3     
        ActiveTransparency Me, True, False, i     
    Next i     
End Sub

For unlimited offline reading, you can download this article for free in PDF format:

See also

In the same category

Published by netty5. - Latest update by Paul Berentzen
This document entitled « VB6 - Making a form transparent » from CCM ( is made available under the Creative Commons license. You can copy, modify copies of this page, under the conditions stipulated by the license, as this note appears clearly.