1 frame如果想设置为透明,但是上面的内容是可见的。
- frame 本身没有设置 backstyle 属性
- 如果设置 frame.visible=false ,则整个frame和上面的内容都会不可见
- 如果form本身没有图片背景,只带颜色,那么
- Frame2.BackColor = Me.BackColor
- 如果form 本身带了图片背景,那么要设置 frame 为透明的,需要用到API才行
- http://tieba.baidu.com/p/85748947
- https://bbs.csdn.net/topics/230063940
先添加一个模块~~ 代码如下:
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 Const WS_EX_LAYERED = &H80000
Public Const GWL_EXSTYLE = (-20)
Public Const LWA_ALPHA = &H2
Public Const LWA_COLORKEY = &H1
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
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, 192, LWA_ALPHA
End Sub
2 form 窗体设置半透明