给你一个例子: 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 Const WS_EX_LAYERED = &H80000 Private Const GWL_EXSTYLE = (-20) Private Const LWA_ALPHA = &H2 Private Const LWA_COLORKEY = &H1 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 LongPrivate Sub Command1_Click() Dim rtn As Long rtn = GetWindowLong(Me.hwnd, GWL_EXSTYLE) '取的窗口原先的样式 rtn = rtn Or WS_EX_LAYERED '使窗体添加上新的样式WS_EX_LAYERED SetWindowLong Me.hwnd, GWL_EXSTYLE, rtn '把新的样式赋给窗体 SetLayeredWindowAttributes Me.hwnd, 0, 100, LWA_ALPHA '100为透明值,其范围是0-255end sub
代码都有解释呀,API是固定的
Private Sub Command1_Click() Dim rtn As Long rtn = GetWindowLong(Me.hwnd, GWL_EXSTYLE) '取的窗口原先的样式 rtn = rtn Or WS_EX_LAYERED '使窗体添加上新的样式WS_EX_LAYERED SetWindowLong Me.hwnd, GWL_EXSTYLE, rtn '把新的样式赋给窗体 SetLayeredWindowAttributes Me.hwnd, 0, 100, LWA_ALPHA '100为透明值,其范围是0-255 end sub这个只能在NT/XP上用,不能在9X下用。 他写的是半透明窗体。 SetLayeredWindowAttributes Me.hwnd, 0, 100, LWA_ALPHA '100为透明值,其范围是0-255 这行代码里的100改成0就可以使窗体完全透明,100改成255就是不透明。
'form1的代码,需要添加一个时间控件Timer1 Public saveDc As Long Public hDestDc As Long Public nWidth As Long Public nHeight As Long Public hsaveBmp As Long Public hformBmp As Long Public yLeft, yTop As IntegerPrivate Sub Form_Load() nWidth = Form1.ScaleWidth nHeight = Form1.ScaleHeight hDestDc = GetDC(0) saveDc = CreateCompatibleDC(hDestDc) hsaveBmp = CreateCompatibleBitmap(hDestDc, ScaleX(Screen.Width, 1, 3), ScaleY(Screen.Height, 1, 3)) SelectObject saveDc, hsaveBmp BitBlt saveDc, 0, 0, ScaleX(Screen.Width, 1, 3), ScaleY(Screen.Height, 1, 3), hDestDc, 0, 0, vbSrcCopy yLeft = Form1.Left yTop = Form1.Top Show End Sub Private Sub start() nWidth = Form1.ScaleWidth nHeight = Form1.ScaleHeight BitBlt Form1.hdc, 0, 0, nWidth, nHeight, saveDc, ScaleX(Form1.Left, 1, 3) + 4, ScaleY(Form1.Top, 1, 3) + 23, vbSrcCopyEnd SubPrivate Sub Form_Paint() start End SubPrivate Sub Form_Resize() start End SubPrivate Sub Form_Unload(Cancel As Integer) DeleteObject hsaveBmp DeleteDC hDestDc End SubPrivate Sub Timer1_Timer() If Form1.Left <> yLeft Or Form1.Top <> yTop Then Form_PaintyLeft = Form1.Left yTop = Form1.Top End If End Sub'Module1模块代码 Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long Public Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDc As Long, ByVal X As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObiect As Long) As Long Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long Public Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long请你调试,是否正确如有错误请给我发CSDN短消息。
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 Const WS_EX_LAYERED = &H80000
Private Const GWL_EXSTYLE = (-20)
Private Const LWA_ALPHA = &H2
Private Const LWA_COLORKEY = &H1
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 LongPrivate Sub Command1_Click()
Dim rtn As Long
rtn = GetWindowLong(Me.hwnd, GWL_EXSTYLE) '取的窗口原先的样式
rtn = rtn Or WS_EX_LAYERED '使窗体添加上新的样式WS_EX_LAYERED
SetWindowLong Me.hwnd, GWL_EXSTYLE, rtn '把新的样式赋给窗体
SetLayeredWindowAttributes Me.hwnd, 0, 100, LWA_ALPHA '100为透明值,其范围是0-255end sub
Dim rtn As Long
rtn = GetWindowLong(Me.hwnd, GWL_EXSTYLE) '取的窗口原先的样式
rtn = rtn Or WS_EX_LAYERED '使窗体添加上新的样式WS_EX_LAYERED
SetWindowLong Me.hwnd, GWL_EXSTYLE, rtn '把新的样式赋给窗体
SetLayeredWindowAttributes Me.hwnd, 0, 100, LWA_ALPHA '100为透明值,其范围是0-255
end sub这个只能在NT/XP上用,不能在9X下用。
他写的是半透明窗体。
SetLayeredWindowAttributes Me.hwnd, 0, 100, LWA_ALPHA '100为透明值,其范围是0-255
这行代码里的100改成0就可以使窗体完全透明,100改成255就是不透明。
Public saveDc As Long
Public hDestDc As Long
Public nWidth As Long
Public nHeight As Long
Public hsaveBmp As Long
Public hformBmp As Long
Public yLeft, yTop As IntegerPrivate Sub Form_Load()
nWidth = Form1.ScaleWidth
nHeight = Form1.ScaleHeight
hDestDc = GetDC(0)
saveDc = CreateCompatibleDC(hDestDc)
hsaveBmp = CreateCompatibleBitmap(hDestDc, ScaleX(Screen.Width, 1, 3), ScaleY(Screen.Height, 1, 3))
SelectObject saveDc, hsaveBmp
BitBlt saveDc, 0, 0, ScaleX(Screen.Width, 1, 3), ScaleY(Screen.Height, 1, 3), hDestDc, 0, 0, vbSrcCopy
yLeft = Form1.Left
yTop = Form1.Top
Show
End Sub
Private Sub start()
nWidth = Form1.ScaleWidth
nHeight = Form1.ScaleHeight
BitBlt Form1.hdc, 0, 0, nWidth, nHeight, saveDc, ScaleX(Form1.Left, 1, 3) + 4, ScaleY(Form1.Top, 1, 3) + 23, vbSrcCopyEnd SubPrivate Sub Form_Paint()
start
End SubPrivate Sub Form_Resize()
start
End SubPrivate Sub Form_Unload(Cancel As Integer)
DeleteObject hsaveBmp
DeleteDC hDestDc
End SubPrivate Sub Timer1_Timer()
If Form1.Left <> yLeft Or Form1.Top <> yTop Then
Form_PaintyLeft = Form1.Left
yTop = Form1.Top
End If
End Sub'Module1模块代码
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Public Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDc As Long, ByVal X As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObiect As Long) As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Public Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long请你调试,是否正确如有错误请给我发CSDN短消息。