当前位置: 主页 > 日志 > VB >

VB半透明窗体的实现


Option Explicit
Private Declare SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Declare GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare 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 sty As Long
    sty = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
    sty = sty Or WS_EX_LAYERED
    SetWindowLong Me.hwnd, GWL_EXSTYLE, sty
    SetLayeredWindowAttributes Me.hwnd, 0, 100, LWA_ALPHA
End Sub


函数说明:
使用SetLayeredWindowAttributes这个函数,可以轻松的实现半透明窗体。
其中hwnd是透明窗体的句柄,crKey为颜色值,bAlpha是透明度,取值范围是
[0,255],dwFlags是透明方式,可以取两个值:当取值为LWA_ALPHA时,
crKey参数无效,bAlpha参数有效;当取值为LWA_COLORKEY时,bAlpha参数有
效而窗体中的所有颜色为crKey的地方将变为透明

程序说明:
按照微软的要求,透明窗体窗体在创建时应使用WS_EX_LAYERED参数
(用CreateWindowEx),或者在创建后设置该参数(用SetWindowLong),本程序采用后者。



[日志信息]

该日志于 2009-02-25 15:12 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “VB半透明窗体的实现” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!!    (尊重他人劳动,你我共同努力)
   
验证(必填):   点击我更换验证码

redice's Blog  is powered by DedeCms |  Theme by Monkeii.Lee |  网站地图 |  本服务器由西安鲲之鹏网络信息技术有限公司友情提供

返回顶部