创建由小到大弹出的窗口时,如何让窗口居中显示出来?
从一个站点上得到一段创建由小到大弹出的窗口的代码,在运行时,不能实现在打开窗体时窗体是从屏幕中间显示出来,然后再逐渐变大。请大家帮忙加上一段代码,以弥补这个缺陷,谢谢! 我用记事本打开代码看了...好象不用那么麻烦的吧???你新建一个工程,在代码里粘贴下面这些试试效果:
Private Declare Function AnimateWindow Lib "user32" (ByVal hwnd As Long, ByVal dwTime As Long, ByVal dwFlags As Long) As Long
Private Sub Form_Load()
AnimateWindow hwnd, 3000, &&H10
Me.Refresh
End Sub
由于我没有开发环境,只是查查资料而已,不知道效果能不能出得来........ 谢谢马兄!用了您的代码后,运行程序时,窗体是先从屏幕左上角慢慢显示出来,然后再一下子跳到屏幕居中的位置。如何才能实现窗体一开始就是在屏幕居中的位置上慢慢显示出来?谢谢!
终于搞到一个VB精简版........
这样改吧:
Private Declare Function AnimateWindow Lib "user32" (ByVal hwnd As Long, ByVal dwTime As Long, ByVal dwFlags As Long) As Long
Private Sub Form_Load()
With Screen
Me.Left = .Width / 2 - Me.Width / 2
Me.Top = .Height / 2 - Me.Height / 2
End With
AnimateWindow hwnd, 300, &H10&
Me.Refresh
End Sub 再次致谢!
查看了一下 AnimateWindow 函数,发现 AW_CENTER = $00000010的功能是实现窗体从中心向四周扩展,在关闭动画中则为从四周向中心收缩。看了马兄的代码,有两个问题想请教:
1、&H10&为什么等于 $00000010?
2、如何才能实现在关闭窗体时,窗体从四周向中心收缩? 问题一......不知道.....
问题二:
在UNLOAD事件里也添加这个代码,只是在常数里再加个&H10000:
AnimateWindow hwnd, 300, &H10& + &H10000 再次谢谢马兄!但用了您的代码后,在关闭窗体时并没有看到窗体由四周向中心收缩的特效(如录像)。我的环境是win--xp + office 2003
Private Declare Function AnimateWindow Lib "user32" (ByVal hwnd As Long, ByVal dwTime As Long, ByVal dwFlags As Long) As Long
Private Sub Form_Load()
With Screen
Me.Left = .Width / 2 - Me.Width / 2
Me.Top = .Height / 2 - Me.Height / 2
End With
AnimateWindow hwnd, 3000, &H10&
Me.Refresh
End Sub
Private Sub Form_Unload(Cancel As Integer)
AnimateWindow hwnd, 3000, &H10& + &H10000
End Sub
[此贴子已经被作者于2005-11-4 8:29:15编辑过] 我倒,怎么每次回你的帖,服务器都要禁止我一百二十秒的连接~~已经是昨晚到现在的第三次了...郁闷
回正题...
语法上应该是没错的,你把你的&H10换成&H80000再看看,就知道了.
也许&H10效果还需要一些辅助常量?不过说明都是E文的,而我的E文...........-_-b 谢谢马兄!
把&H10换成&H80000,也就是 AW_BLEND = $00080000'是窗体的淡入淡出效果,并不是 AW_CENTER = $00000010'窗体在打开时从中心向四周扩展,在关闭动画中则为从四周向中心收缩效果。
如何才能实现在关闭窗体时,窗体从四周向中心收缩? 我让你换成&H80000是想让你知道,那个API的语法是没问题的.
至于为什么不能在关闭时出现那个效果,我就不得而知了....
也许,还是得自己用代码实现窗体的收缩......
页:
[1]