|
11.5 动画控件 Windows 95支持一种动画控件(Animate control),动画控件可以播放AVI格式的动画片(AVI Clip),动画片可以来自一个AVI文件,也可以来自资源中。合理地使用动画控件,可以使程序的界面更加形象生动。 11.5.1 动画控件的使用 MFC的CAnimateCtrl类封装了动画控件,该类的Create成员函数负责创建动画控件,其声明为:
参数dwStyle是如表11.3所示的控件风格的组合,参数rect指定了控件的尺寸,pParentWnd指向父窗口,nID是控件的ID。若创建成功则函数返回TRUE。 表11.3 动画控件的风格
除表中的风格外,一般还要为动画控件指定WS_CHILD、WS_VISIBLE和WS_BORDER窗口风格。例如,要创建一个能自动播放的动画控件,应该指定其风格为WS_CHILD|WS_VISIBLE|WS_BORDER|ACS_AUTOPLAY。 用户可以向对话框模板中加入动画控件,在模板编辑器的控件面板上,动画控件是用一个电影胶片的图形来表示的。在动画控件的属性对话框中可以指定上表列出的风格。只要不指定ACS_CENTER风格,用户就不必关心动画控件的尺寸,因为在打开动画片时控件的尺寸会被自动调整成动画片的幅面大小。 CAnimateCtrl类主要的成员函数包括:
一般来说,应该把动画片放在资源里,而不是单独的AVI文件中。这样做可以使应用程序更容易管理,否则,如果应用程序要附带一大堆BMP或AVI文件,会给人一种凌乱和不专业的感觉。Visual C++不直接支持AVI资源,但用户可以创建一种新的资源类型来包含AVI。在VC的一个名为cmnctrls的MFC例子中提供了几个AVI文件(如dillo.avi),如果用户要把象dillo.avi这样的AVI文件包含到程序的资源中,则应按以下几步去做:
图11.5 Custom Resource Type对话框
创建动画控件的方法与创建普通控件相比并没有什么不同,用户可以用ClassWizard把动画控件和CAnimateCtrl对象联系起来。动画控件的使用很简单,下面的这段代码打开并不断重复播放一个资源动画,它们通常是位于OnInitDialog函数中:
如果为动画控件指定了ACS_AUTOPLAY风格,则在调用Open后就会自动重复播放,不必调用Play。程序一般不需要调用Close来关闭动画片,因为这个任务在控件被删除时会自动完成。但如果在控件已包含一个动画片的情况下,需要打开一个新的动画片,则程序应先调用Close删除原来的动画片。 11.5.2 动画控件的局限 动画控件并不能播放所有的AVI文件,只有满足下列条件的AVI文件才能被播放:
动画控件最大的局限性在于它只能显示系统调色板中缺省的颜色,因此如果用动画控件来播放一个256色的AVI文件,那么播放效果看起来就象一个16色的动画一样,很不理想。 总之,动画控件只能播放一些简单的,颜色数较少的AVI动画。如果要较满意地播放256色的AVI文件,就要利用下面介绍的MCI接口。
本教程幼髡? 作者: 不详, 来源: Visual C++王朝 |