foshan 发表于 2005-11-1 16:41:53

创建由小到大弹出的窗口时,如何让窗口居中显示出来?

从一个站点上得到一段创建由小到大弹出的窗口的代码,在运行时,不能实现在打开窗体时窗体是从屏幕中间显示出来,然后再逐渐变大。请大家帮忙加上一段代码,以弥补这个缺陷,谢谢!

马大哈 发表于 2005-11-2 14:39:29

我用记事本打开代码看了...好象不用那么麻烦的吧???

你新建一个工程,在代码里粘贴下面这些试试效果:

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

由于我没有开发环境,只是查查资料而已,不知道效果能不能出得来........

foshan 发表于 2005-11-2 15:38:04

谢谢马兄!用了您的代码后,运行程序时,窗体是先从屏幕左上角慢慢显示出来,然后再一下子跳到屏幕居中的位置。如何才能实现窗体一开始就是在屏幕居中的位置上慢慢显示出来?谢谢!

马大哈 发表于 2005-11-2 16:06:01

终于搞到一个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

foshan 发表于 2005-11-2 16:32:46

再次致谢!
查看了一下 AnimateWindow 函数,发现 AW_CENTER = $00000010的功能是实现窗体从中心向四周扩展,在关闭动画中则为从四周向中心收缩。看了马兄的代码,有两个问题想请教:
1、&H10&为什么等于 $00000010?
2、如何才能实现在关闭窗体时,窗体从四周向中心收缩?

马大哈 发表于 2005-11-3 22:29:33

问题一......不知道.....

问题二:

在UNLOAD事件里也添加这个代码,只是在常数里再加个&H10000:

AnimateWindow hwnd, 300, &H10& + &H10000

foshan 发表于 2005-11-4 08:27:19

再次谢谢马兄!但用了您的代码后,在关闭窗体时并没有看到窗体由四周向中心收缩的特效(如录像)。我的环境是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编辑过]

马大哈 发表于 2005-11-4 12:51:22

我倒,怎么每次回你的帖,服务器都要禁止我一百二十秒的连接~~已经是昨晚到现在的第三次了...郁闷

回正题...

语法上应该是没错的,你把你的&H10换成&H80000再看看,就知道了.

也许&H10效果还需要一些辅助常量?不过说明都是E文的,而我的E文...........-_-b

foshan 发表于 2005-11-4 14:21:02

谢谢马兄!
把&H10换成&H80000,也就是 AW_BLEND = $00080000'是窗体的淡入淡出效果,并不是 AW_CENTER = $00000010'窗体在打开时从中心向四周扩展,在关闭动画中则为从四周向中心收缩效果。
如何才能实现在关闭窗体时,窗体从四周向中心收缩?

马大哈 发表于 2005-11-4 18:08:31

我让你换成&H80000是想让你知道,那个API的语法是没问题的.

至于为什么不能在关闭时出现那个效果,我就不得而知了....

也许,还是得自己用代码实现窗体的收缩......
页: [1]
查看完整版本: 创建由小到大弹出的窗口时,如何让窗口居中显示出来?