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 bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Const WS_EX_LAYERED = &H80000
Private Const GWL_EXSTYLE = (-20)
Private Const LWA_ALPHA = &H2
Private Const LWA_COLORKEY = &H1Private Sub Form_Load()
    Dim rtn As Long
    rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
    rtn = rtn Or WS_EX_LAYERED
    SetWindowLong hwnd, GWL_EXSTYLE, rtn
    SetLayeredWindowAttributes hwnd, 0, 100, LWA_ALPHA   '100值可调,0-255之间,越小透明度越高
  '  SetLayeredWindowAttributes hwnd, RGB(0, 0, 0), 0, LWA_COLORKEY    '将窗体上的黑颜色去掉
End Sub
使用LWA_ALPHA,窗体和控件都半透明。使用LWA_COLORKEY,可将指定颜色透明,但不是半透明。有什么方法可将窗体半透明控件不透明吗?