主表单以动画的形式从屏幕中向四周扩散,最后至最大化
我有一个登陆表单,当我输入用户名和密码后打开主表单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