- MFC 教程
- MFC - 首页
- MFC - 概述
- MFC - 环境设置
- MFC - VC++ 项目
- MFC - 开始入门
- MFC - Windows 基础
- MFC - 对话框
- MFC - Windows 资源
- MFC - 属性表
- MFC - Windows 布局
- MFC - 控件管理
- MFC - Windows 控件
- MFC - 消息与事件
- MFC - ActiveX 控件
- MFC - 文件系统
- MFC - 标准 I/O
- MFC - 文档/视图
- MFC - 字符串
- MFC - CArray
- MFC - 链表
- MFC - 数据库类
- MFC - 序列化
- MFC - 多线程
- MFC - 互联网编程
- MFC - GDI
- MFC - 库
- MFC 有用资源
- MFC - 快速指南
- MFC - 有用资源
- MFC - 讨论
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();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
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);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
m_animationCtrl.Open(L"res\\copyfile.avi");
return TRUE; // return TRUE unless you set the focus to a control
}
步骤 9 - 编译并执行上述代码后,您将看到以下输出。