用VisualBasic制作半透明窗體 函數(shù)SetLayeredWindowAttributes 使用這個函數(shù),可以輕松的實現(xiàn)半透明窗體,
用VisualBasic制作半透明窗體VB
。按照微軟的要求,透明窗體窗體在創(chuàng)建時應(yīng)使用WS_EX_LAYERED參數(shù)(用CreateWindowEx),或者在創(chuàng)建后設(shè)置該參數(shù)(用SetWindowLong),我選用后者。全部
用VisualBasic制作半透明窗體
函數(shù)SetLayeredWindowAttributes
使用這個函數(shù),可以輕松的實現(xiàn)半透明窗體。按照微軟的要求,透明窗體窗體在創(chuàng)建時應(yīng)使用WS_EX_LAYERED參數(shù)(用CreateWindowEx),或者在創(chuàng)建后設(shè)置該參數(shù)(用SetWindowLong),我選用后者。全部函數(shù)、常量聲明如下:
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
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
其中hwnd是透明窗體的句柄,crKey為顏色值,bAlpha是透明度,取值范圍是[0,255],dwFlags是透明方式,可以取兩個值:當(dāng)取值為LWA_ALPHA時,crKey參數(shù)無效,bAlpha參數(shù)有效;當(dāng)取值為LWA_COLORKEY時,bAlpha參數(shù)有效而窗體中的所有顏色為crKey的地方將變?yōu)橥该鳎@個功能很有用:我們不必再為建立不規(guī)則形狀的窗體而調(diào)用一大堆區(qū)域分析、創(chuàng)建、合并函數(shù)了,只需指定透明處的顏色值即可,哈哈哈哈!請看具體代碼,
電腦資料
《用VisualBasic制作半透明窗體VB》(http://www.ishadingyu.com)。Private Const WS_EX_LAYERED = &H80000
Private Const GWL_EXSTYLE. = (-20)
Private Const LWA_ALPHA = &H2
Private Const LWA_COLORKEY = &H1
代碼一:一個半透明窗體
Private Sub Form_Load()
Dim rtn As Long
rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
rtn = rtn Or WS_EX_LAYERED
SetWindowLong hwnd, GWL_EXSTYLE, rtn
SetLayeredWindowAttributes hwnd, 0, 200, LWA_ALPHA
End Sub
代碼二:形狀不規(guī)則的窗體
Private Sub Form_Load()
Dim rtn As Long
BorderStyler=0
rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
rtn = rtn Or WS_EX_LAYERED
SetWindowLong hwnd, GWL_EXSTYLE, rtn
SetLayeredWindowAttributes hwnd, &HFF0000, 0, LWA_COLORKEY ’將扣去窗口中的藍(lán)色
End Sub
原文轉(zhuǎn)自:http://www.ltesting.net