首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

主表单以动画的形式从屏幕中向四周扩散,最后至最大化解决思路

2012-03-24 
主表单以动画的形式从屏幕中向四周扩散,最后至最大化我有一个登陆表单,当我输入用户名和密码后打开主表单m

主表单以动画的形式从屏幕中向四周扩散,最后至最大化
我有一个登陆表单,当我输入用户名和密码后打开主表单main,请问如何让主表单以动画的形式从屏幕中向四周扩散,最后至最大化

[解决办法]
如果表单是顶级窗口可以使用 api 来实现:

DECLARE Long AnimateWindow IN WIN32API Long, Long, Long
AnimateWindow( This.hWnd, 200, 0x10 )

写在表单的 Init 事件中。

[解决办法]
下面是用窗口区域函数来实现的方法,麻烦一点:

1. 表单 Init:
DECLARE Long CreateRectRgn IN WIN32API Long, Long, Long, Long
DECLARE Long GetWindowRgn IN WIN32API Long, Long @
DECLARE Long SetWindowRgn IN WIN32API Long, Long, Long

This.AddProperty( 'cw', 0 )
This.AddProperty( 'hRgn', 0 )

m.hRgn = 0
GetWindowRgn( This.hWnd, @ m.hRgn )
This.hRgn = m.hRgn

m.hRgn = CreateRectRgn( 0, 0, 1, 1 )
SetWindowRgn( This.hWnd, m.hRgn, 1 )

2. 表单中加一个定时器, 设置 Interval = 10, Enabled = .F., Timer 事件中写:
WITH Thisform
IF ( .cw < SYSMETRIC(1)/2 ) OR ( .cw < SYSMETRIC(2)/2 )
.cw = .cw + 10
m.hRgn = CreateRectRgn( ;
SYSMETRIC(1)/2-.cw, SYSMETRIC(2)/2-.cw, ;
SYSMETRIC(1)/2+.cw, SYSMETRIC(2)/2+.cw )
SetWindowRgn( .hWnd, m.hRgn, 1 )
ELSE
This.Interval = 0
This.Enabled = .F.
SetWindowRgn( .hWnd, .hRgn, 1 )
ENDIF
ENDWITH

3. 表单 Show 方法中写:
This.Timer1.Enabled = .T.

4. 设置表单的 WindowState = 2

热点排行