关于用SetLayeredWindowAttributes设置透明窗体的相关问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 09:48:14
使用此声明,让窗体在启动时可以逐渐由透明变实体,但是添加有此声明的窗体在调用wmp.dll后播放视频时会严重闪屏,各位大虾有什么好点的解决方法?
我是在form load的时候使用了SetLayeredWindowAttributes hwnd, 0, 0, LWA_ALPHA,但是我定义了时钟,
If AphR <= 255 Then
……
SetLayeredWindowAttributes hwnd, 0, AphR, LWA_ALPHA
AphR = AphR + 5
Else
Timer.Enabled = False
End If

既然我不让这时钟走了,他应该就不再SetLayeredWindowAttributes才对啊,swx的代码我看了,做法和我的类似,不过不是解决我现在问的问题,还请各位大虾赐教!

lyglay的替换方法确实也是另一个好方法,但是还是没能解决闪屏
swx1995,我试过,只要调用了这个API,我就设成为255,放视频还是闪,反而让另一个任何的窗口覆盖在上面到能显示正常了,郁闷啊

Dim oldStyle As Long

Private Sub Form_Load()
oldStyle = GetWindowLong(hwnd, GWL_EXSTYLE)
Me.Hide
Timer1.Interval = 1
End Sub

Private Sub Timer1_Timer()
Static AphR As Long
rtn& = GetWindowLong(hwnd, GWL_EXSTYLE)
rtn = rtn Or WS_EX_LAYERED
SetWindowLong hwnd, GWL_EXSTYLE, rtn
SetLayeredWindowAttributes hwnd, 0, AphR, LWA_ALPHA
If AphR = 255 Then Timer1.Interval = 0: ReSet
AphR = AphR + 5
Me.Show
End Sub

Sub ReSet()
SetWindowLong hwnd, GWL_EXSTYLE, oldStyle
End Sub

代码问题 可能你一直在SetLayered....
一般启动代码改下就可以了

这个也是我写的,完善版本浅出浅入.

http://www.mndsoft.com/bbs/Show.asp?id=1629&BoardID=13&TB=1

swx,swx1995一个人嘛..嘿嘿..
顺便推荐一个好的网站..就是这个拉.

===============================
莫非逻辑问题
你改一下,可能没有真正设置成255,可能只有250,这样可能会闪