【实例说明】 选择窗体的透明度,窗体按其相应的透明度显示。
【编程思路】 调用API函数。
【设计步骤】
1.新建一个标准工程,创建一个新窗体和一个标准模块,默认名分别为Form1和Module1。
2.在窗体上放置一个Label控件和ComboBox控件。
3.源程序 [素材源程序下载]
①在模块中添加以下程序:
Option Explicit
'常量声明
Public Const WS_EX_LAYERED = &H80000
Public Const GWL_EXSTYLE = (-20)
Public Const LWA_ALPHA = &H2
Public Const LWA_COLORKEY = &H1
'API函数声明
Public Declare Function SetLayeredWindowAttributes Lib "user32" _
(ByVal hwnd As Long, _
ByVal crKey As Long, _
ByVal bAlpha As Byte, _
ByVal dwFlags 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 hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
②在窗体中添加以下程序:
Option Explicit
Private r As Long
Private s As Long
'自定义函数funFormTrans
Private Function funFormTrans(ByVal s As Long) As Long
'获取窗体大小
r = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
r = r Or WS_EX_LAYERED
'将半透明值赋予给窗体
SetWindowLong Me.hwnd, GWL_EXSTYLE, r
'赋予窗体半透明
SetLayeredWindowAttributes Me.hwnd, 0, s, LWA_ALPHA
End Function
Private Sub Combo1_Click()
If Combo1.Text = "0%" Then
s = 255
ElseIf Combo1.Text = "20%" Then
s = 200
ElseIf Combo1.Text = "50%" Then
s = 128
ElseIf Combo1.Text = "100%" Then
s = 50
End If
Call funFormTrans(s)
End Sub
Private Sub Form_Load()
Combo1.AddItem "0%"
Combo1.AddItem "20%"
Combo1.AddItem "50%"
Combo1.AddItem "100%"
End Sub
|