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 对话框的项目。
步骤 2 − 创建项目后,删除 TODO 行并单击工具箱中的"动画控件"并绘制一个矩形,如下面的快照所示。
步骤 3 − 要添加动画控件的控件变量,请右键单击并选择"添加变量"。
步骤 4 − 输入变量名称和变量类型,动画为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 − 当上面的代码被编译并执行时,您将看到以下输出。