Visual C++ 开发环境为控件提供的自绘制功能使程序员能够充分发挥自己的创造性来设计比较漂亮的程序界面。所谓AVI 按钮是指每当鼠标从按钮上经过时就播放一段按钮提示的AVI,在许多的游戏程序以及三维动画软件中(如摩托英豪、Cool 3D 等)都广泛的采用了这种 AVI 按钮。它使得程序的用户界面很具有动感,也使得我们的程序至少看上去更专业,本实例借助 Visual C++强大的控件自绘制功能来实现这种 AVI 按钮的原理及实现。 一、实现方法 为了实现能够播放AVI 视频流的动画按钮,还是需要利用控件的重载功能,这部分内容本书已经在《实例:实现 XP 风格的按钮》中介绍了,这里就不再赘述了,读者可以参考该实例查阅相关内容。本实例主要探讨如何使用 MFC 的CanimateCtrl 动画类播放AVI 格式的视频流,视频流可以来自一个 AVI 文 件,也可以来自资 源 。在程序中合 理地 使用动画控件,可以使程序的界面更加 形 象 生 动。 MFC 的CAnimateCtrl 类封 装 了动画控件,该类的Create()成 员函 数 负 责 创建 动画控件,其 声 明 为: BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); 函 数 中的参数 dwStyle 是如表 一所示的控件风格的组 合 ,参数 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。 CAnimateCtrl 类主要的成 员函 数 包 括 :BOOL Open( LPCTSTR lpszFileName )、BOOL Open( UINT nID ) 、BOOL Play( UINT nFrom, UINT nTo, UINT nRep ) 、BOOL Seek( UINT nTo )、BOOL Stop( )...