有个winAPI函数可以实现这个功能的。
我把form导出到prg,可以实现放大缩小窗口直至消失。
原本可以淡入淡出的效果的,但是我的电脑不知道怎么回事,没反应。。。
函数的申明:
DECLARE integer AnimateWindow in win32api integer hwindow,integer dwtime,integer dwflags
参数说明:
hWnd (窗口句柄):
类型:HWND
说明:指定产生动画效果的窗口句柄。调用线程必须拥有该窗口。
注意:如果线程不拥有窗口,函数会失败但 GetLastError 返回 ERROR_SUCCESS。
dwTime (动画时间):
类型:DWORD
说明:指定动画持续的时间(以毫秒为单位)。完成一个动画的标准时间通常为200毫秒。
示例:设置为1000表示动画持续1秒。
dwFlags (动画标志):
类型:DWORD
说明:指定动画类型,可以是一个或多个标志的组合。
主要标志包括:
方向标志:
AW_HOR_POSITIVE = 0x00000001:从左向右显示窗口
AW_HOR_NEGATIVE = 0x00000002:从右向左显示窗口
AW_VER_POSITIVE = 0x00000004:从上向下显示窗口
AW_VER_NEGATIVE = 0x00000008:从下向上显示窗口
效果标志:
AW_CENTER = 0x00000010:从中心向四周扩展(显示时)或从四周向中心收缩(隐藏时)
AW_HIDE = 0x00010000:隐藏窗口,缺省则显示窗口
AW_ACTIVATE = 0x00020000:激活窗口,与方向标志组合使用
AW_SLIDE = 0x00040000:使用滑动类型(缺省为滚动动画)
AW_BLEND = 0x00080000:使用淡出效果(仅对顶层窗口有效)
代码如下:

程序代码:
PUBLIC oform1
oform1=NEWOBJECT("form1")
oform1.Show
RETURN
**************************************************
*-- Form: form1 (d:\documents\visual foxpro 项目\animatewindow.scx)
*-- 父类: form
*-- 基类: form
*-- 时间戳: 03/14/26 01:30:00 PM
*
DEFINE CLASS form1 AS form
DoCreate = .T.
Caption = "Form1"
Name = "Form1"
ADD OBJECT label1 AS label WITH ;
AutoSize = .T., ;
Caption = "表单动画效果演示", ;
Height = 16, ;
Left = 24, ;
Top = 12, ;
Width = 98, ;
Name = "Label1"
ADD OBJECT command1 AS commandbutton WITH ;
Top = 48, ;
Left = 24, ;
Height = 25, ;
Width = 60, ;
Caption = "演示", ;
Name = "Command1"
PROCEDURE Load
DECLARE integer AnimateWindow in win32api integer hwindow,integer dwtime,integer dwflags
*animatewindow(this.HWnd,2000,BITOR(0x00040000,0x00000002,0x00020000))
animatewindow(this.HWnd,2000,0x10+0x20000)
ENDPROC
PROCEDURE Destroy
DECLARE integer AnimateWindow in win32api integer hwindow,integer dwtime,integer dwflags
*animatewindow(this.HWnd,2000,BITOR(0x00040000,0x00000002,0x00020000))
animatewindow(this.HWnd,2000,0x10000+0x10)
*animatewindow(this.HWnd,2000,0x10000+0x80000) &&淡入淡出效果
ENDPROC
PROCEDURE command1.Click
thisform.Hide
*animatewindow(thisform.HWnd,1000,BITOR(0x00040000,0x00000002,0x00020000))
*animatewindow(thisform.HWnd,2000,0x80000+0x8)
thisform.Load
thisform.Show
ENDPROC
ENDDEFINE
*
*-- EndDefine: form1
**************************************************