Public Declare Function SetLayeredWindowAttributes Lib _

"user32" (ByVal hnd As Long, ByVal clval As Long, _

ByVal alph As Byte, ByVal flago As Long) As Long

Public Declare Function GetWindowLong Lib "user32" Alias _

"GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Public Declare Function SetWindowLong Lib "user32" Alias _

"SetWindowLongA" (ByVal hnd As Long, ByVal nIndex As Long, _

ByVal dwNewLong As Long) As Long

Public Const LWA_ALPHA = &H2&

Public Const LWA_COLORKEY = &H1&

Public Const GWL_EXSTYLE = (-20)

Public Const WS_EX_LAYERED = &H80000

Public Const WS_EX_TRANSPARENT = &H20&

部分透明窗体(窗体的一部分颜色透明):

Dim lOldStyle As Long

lOldStyle = GetWindowLong(Me.hwnd, GWL_EXSTYLE)

SetWindowLong Me.hwnd, GWL_EXSTYLE, lOldStyle Or WS_EX_LAYERED

SetLayeredWindowAttributes Me.hwnd, &HFFFFFF, 255, LWA_COLORKEY

整体半透明:

(其中COLOR_TRANSPARENCY是透明的颜色,使用16进制表示,如&H80000)

Option Explicit

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 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

Const WS_EX_LAYERED = &H80000

Const GWL_EXSTYLE = (-20)

Const LWA_ALPHA = &H2

Const LWA_COLORKEY = &H1

Private Sub Form_Load()

Dim lOldStyle As Long

lOldStyle = GetWindowLong(Me.hWnd, GWL_EXSTYLE)

SetWindowLong Me.hWnd, GWL_EXSTYLE, lOldStyle Or WS_EX_LAYERED

SetLayeredWindowAttributes Me.hWnd, &HFFFFFF, 255, LWA_COLORKEY

End Sub

Comments
Write a Comment