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 dialog Project

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

MFC Animation Control

步骤 3 - 要为动画控件添加控件变量,请右键单击并选择“添加变量”。

MFC Animation Demo

步骤 4 - 输入变量名和变量类型,对于动画,变量类型为 CAnimateCtrl。

CAnimateCtrl Animation.

步骤 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 - 编译并执行上述代码后,您将看到以下输出。

MFC CMFCAnimationDemo
mfc_windows_controls.htm
广告
© . All rights reserved.