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半透明窗体的实现” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!! (尊重他人劳动,你我共同努力)
呵呵,谢谢
VaTG790i.最好的<a href=http://www.kyfei.com>网站推广软件</a>,
非常好
....................
;ui;普i;uighur;ui;ui;个
在unix网络编程中看到了关于TCP/IP的一些内容,我感觉还是写的不够。正在下载中,一定
下载地址呢