Windows 95支持一种动画控件(Animate control),动画控件可以播放AVI格式的动画片(AVI Clip),动画片可以来自一个AVI文件,也可以来自资源中。合理地使用动画控件,可以使程序的界面更加形象生动。
MFC的CAnimateCtrl类封装了动画控件,该类的Create成员函数负责创建动画控件,其声明为:
BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
参数dwStyle是如表11.3所示的控件风格的组合,参数rect指定了控件的尺寸,pParentWnd指向父窗口,nID是控件的ID。若创建成功则函数返回TRUE。
动画控件的风格
风格 |
含义 |
ACS_CENTER |
使动画片居于控件中央,并使动画片打开后控件窗口的尺寸和位置保持不变。如果不指定该风格,则控件的尺寸会自动调整来适应动画片的大小。 |
ACS_TRANSPARENT |
使动画片的背景透明(不输出动画片的背景色)。 |
ACS_AUTOPLAY |
一旦打开动画片后就一直重复播放。 |
除表中的风格外,一般还要为动画控件指定WS_CHILD、WS_VISIBLE和WS_BORDER窗口风格。例如,要创建一个能自动播放的动画控件,应该指定其风格为WS_CHILD|WS_VISIBLE|WS_BORDER|ACS_AUTOPLAY。
用户可以向对话框模板中加入动画控件,在模板编辑器的控件面板上,动画控件是用一个电影胶片的图形来表示的。在动画控件的属性对话框中可以指定上表列出的风格。只要不指定ACS_CENTER风格,用户就不必关心动画控件的尺寸,因为在打开动画片时控件的尺寸会被自动调整成动画片的幅面大小。
CAnimateCtrl类主要的成员函数包括:
BOOL Open( LPCTSTR lpszFileName );
BOOL Open( UINT nID );
Open函数从AVI文件或资源中打开动画片,如果参数lpszFileName或nID为NULL,则系统将关闭以前打开的动画片。若成功则函数返回TRUE。
BOOL Play( UINT nFrom, UINT nTo, UINT nRep );
该函数用来播放动画片。参数nFrom指定了播放的开始帧的索引,索引值必须小于65536,若为0则从头开始播放。nTo指定了结束帧的索引,它的值必须小于65536,若为-1则表示播放到动画片的末尾。nRep是播放的重复次数,若为-1则无限重复播放。若成功则函数返回TRUE。
BOOL Seek( UINT nTo );
该函数用来静态地显示动画片的某一帧。参数nTo是帧的索引,其值必须小于65536,若为0则显示第一帧,若为-1则显示最后一帧。若成功则函数返回TRUE。
BOOL Stop( );
停止动画片的播放。若成功则函数返回TRUE。
BOOL Close( );
关闭并从内存中清除动画片。若成功则函数返回TRUE。