请问,如何做一个透明渐变的启动窗体?
现在不少软件都有那种透明渐变的启动窗体,我想做一个,看了一些文章,好象用SetLayeredWindowAttributes函数比较简单,但代码写在窗体的Form_Load事件中没效果,写在其他事件中倒是有效果,可我怎么能实现窗体一启动就实现从由全透明到全清晰的渐变效果呢?以下代码
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
Private Const WS_EX_LAYERED = &H80000
Private Const GWL_EXSTYLE = (-20)
Private Const LWA_ALPHA = &H2
Private Const LWA_COLORKEY = &H1
Sub delay(ByVal t As Long)
Dim i As Long
For i = 0 To t
Next i
End Sub
Private Sub Form_DblClick()
End
End Sub
Private Sub Form_Load()
Dim rtn As Long
rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
rtn = rtn Or WS_EX_LAYERED
SetWindowLong hwnd, GWL_EXSTYLE, rtn
For i = 0 To 255 Step 10
SetLayeredWindowAttributes hwnd, 0, i, LWA_ALPHA
DoEvents
delay 500
Next i
End Sub
问题点数:100、回复次数:4Top
1 楼xinliangyu(yxl)回复于 2005-06-02 10:04:16 得分 50
放在form_activate下Top
2 楼DooDu(杜霖:I want,I can(开关拉))回复于 2005-06-02 10:08:32 得分 50
同意楼上
另外,放到
Form_Resize里也可以的
Form_Resize和Form_Activate是都会触发的Top
3 楼yoban(做梦都想成为高手)回复于 2005-06-02 10:13:56 得分 0
呵呵,谢谢楼上的2位,我就没试过代码写在form_activate下,果然可以,还是怪自己太菜Top
4 楼yoban(做梦都想成为高手)回复于 2005-06-02 10:16:10 得分 0
接分Top




