MFC - 动画控件

动画控件是一个以 AVI 格式显示音频剪辑的窗口。 AVI 剪辑是一系列位图帧,就像电影一样。 动画控件只能播放简单的 AVI 剪辑,并且不支持声音。 它由 CAnimateCtrl 类表示。

以下是CAnimateCtrl类中的方法列表 −

序号 方法和说明
1

Close

关闭 AVI 剪辑。

2

Create

创建动画控件并将其附加到 CAnimateCtrl 对象。

3

CreateEx

使用指定的 Windows 扩展样式创建动画控件并将其附加到 CAnimateCtrl 对象。

4

IsPlaying

指示音频-视频交错 (AVI) 剪辑是否正在播放。

5

Open

从文件或资源中打开 AVI 剪辑并显示第一帧。

6

Play

播放没有声音的 AVI 剪辑。

7

Seek

显示 AVI 剪辑的选定单帧。

8

Stop

停止播放 AVI 剪辑。

这是动画控件的消息映射列表 −

消息 映射条目 描述
ACN_START ON_ACN_START ( <id>, <memberFxn> ) 当动画开始时,框架调用此成员函数。
ACN_STOP ON_ACN_STOP ( <id>, <memberFxn> ) 当动画停止时,框架调用此成员函数。

让我们看一个简单的动画控件示例。

步骤 1 − 创建一个新的基于 MFC 对话框的项目。

MFC 对话框项目

步骤 2 − 创建项目后,删除 TODO 行并单击工具箱中的"动画控件"并绘制一个矩形,如下面的快照所示。

MFC 动画控件

步骤 3 − 要添加动画控件的控件变量,请右键单击并选择"添加变量"。

MFC 动画演示

步骤 4 − 输入变量名称和变量类型,动画为CAnimateCtrl。

CAnimateCtrl 动画。

步骤 5 − 使用"属性"窗口,将"边框"值设置为 False,将"自动播放"、"中心"和透明值设置为"True"。

步骤 6 − 这里,我们在 res 文件夹中有 *.avi 文件,该文件夹是项目中使用的任何资源的默认文件夹。

步骤 7 − 要启动动画,我们需要调用CAnimateCtrl类的Open方法。 在 CMFCAnimationDemoDlg::OnInitDialog() 中添加以下代码行

m_animationCtrl.Open(L"res\\copyfile.avi");

步骤 8 − 这是 CMFCAnimationDemoDlg::OnInitDialog() 的完整实现

BOOL CMFCAnimationDemoDlg::OnInitDialog(){
   CDialogEx::OnInitDialog();
	
   // 在系统菜单中添加"关于..."菜单项。
	
   // IDM_ABOUTBOX 必须在系统命令范围内。
   ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
   ASSERT(IDM_ABOUTBOX < 0xF000);
	
   CMenu* pSysMenu = GetSystemMenu(FALSE);
   if (pSysMenu != NULL){
      BOOL bNameValid;
      CString strAboutMenu;
      bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
      ASSERT(bNameValid);
      if (!strAboutMenu.IsEmpty()){
         pSysMenu -> AppendMenu(MF_SEPARATOR);
         pSysMenu -> AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
      }
   }
	
   // 设置该对话框的图标。 框架会自动执行此操作
   // 当应用程序的主窗口不是对话框时
   SetIcon(m_hIcon, TRUE);        // 设置大图标
   SetIcon(m_hIcon, FALSE);       // 设置小图标
	
   // TODO:在此处添加额外的初始化
   m_animationCtrl.Open(L"res\\copyfile.avi");
	
   return TRUE; // 返回 TRUE 除非您将焦点设置到控件
}

步骤 9 − 当上面的代码被编译并执行时,您将看到以下输出。

MFC CMFCAnimationDemo

❮ mfc_windows_controls.html