API
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
……

解决方案 »

  1.   

    如果是win2k或以上,可以使用下面的api
    Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As LongPublic Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPublic Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As LongPublic Const WS_EX_LAYERED = &H80000
    Public Const GWL_EXSTYLE = (-20)
    Public Const LWA_ALPHA = &H2
    Public Const LWA_COLORKEY = &H1
    Public Sub setAlphaWindow(frm As Object, Effect As Integer)            Dim rtn As Long
                    
                rtn = GetWindowLong(frm.hwnd, GWL_EXSTYLE)
                rtn = rtn Or WS_EX_LAYERED
                SetWindowLong frm.hwnd, GWL_EXSTYLE, rtn
                
                If Effect = 2 Then
                   '&H0:Color values(rgb(0,0,0))
                   SetLayeredWindowAttributes frm.hwnd, &H0, 0, LWA_COLORKEY
                Else
                    'LWA_ALPHA:alpha mode
                    '192: alpha degree(0-255)
                    SetLayeredWindowAttributes frm.hwnd, 0, 192, LWA_ALPHA
                End If   End Sub