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
廣告