找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 10375|回复: 9

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

[复制链接]

24

主题

37

回帖

3

精华

钻石会员

积分
4243
发表于 2005-11-1 16:41:53 | 显示全部楼层 |阅读模式
从一个站点上得到一段创建由小到大弹出的窗口的代码,在运行时,不能实现在打开窗体时窗体是从屏幕中间显示出来,然后再逐渐变大。请大家帮忙加上一段代码,以弥补这个缺陷,谢谢! yvOc3gqs.rar (5.71 KB, 下载次数: 23178)

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 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

由于我没有开发环境,只是查查资料而已,不知道效果能不能出得来........
我就是嗷嗷叫的老马了......

24

主题

37

回帖

3

精华

钻石会员

积分
4243
 楼主| 发表于 2005-11-2 15:38:04 | 显示全部楼层
谢谢马兄!用了您的代码后,运行程序时,窗体是先从屏幕左上角慢慢显示出来,然后再一下子跳到屏幕居中的位置。如何才能实现窗体一开始就是在屏幕居中的位置上慢慢显示出来?谢谢!
KIgysxfG.rar (4.18 KB, 下载次数: 22671)

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 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
我就是嗷嗷叫的老马了......

24

主题

37

回帖

3

精华

钻石会员

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

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2005-11-3 22:29:33 | 显示全部楼层
问题一......不知道.....[em15]

问题二:

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

AnimateWindow hwnd, 300, &H10& + &H10000
我就是嗷嗷叫的老马了......

24

主题

37

回帖

3

精华

钻石会员

积分
4243
 楼主| 发表于 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
t7LR8VEQ.rar (4.6 KB, 下载次数: 20200)
[此贴子已经被作者于2005-11-4 8:29:15编辑过]

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

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

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2005-11-4 12:51:22 | 显示全部楼层
我倒,怎么每次回你的帖,服务器都要禁止我一百二十秒的连接~~已经是昨晚到现在的第三次了...郁闷

回正题...

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

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

24

主题

37

回帖

3

精华

钻石会员

积分
4243
 楼主| 发表于 2005-11-4 14:21:02 | 显示全部楼层
谢谢马兄!
把&H10换成&H80000,也就是 AW_BLEND = $00080000  '是窗体的淡入淡出效果,并不是 AW_CENTER = $00000010  '窗体在打开时从中心向四周扩展,在关闭动画中则为从四周向中心收缩效果。
如何才能实现在关闭窗体时,窗体从四周向中心收缩?

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2005-11-4 18:08:31 | 显示全部楼层
我让你换成&H80000是想让你知道,那个API的语法是没问题的.

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

也许,还是得自己用代码实现窗体的收缩......
我就是嗷嗷叫的老马了......

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表