共用方式為


關於動畫控件

動畫控件 是顯示 Audio-Video 交錯式 (AVI) 剪輯的視窗。 AVI 剪輯是一系列位圖畫面,例如電影。 動畫控制項只能顯示不包含音訊的 AVI 剪輯。

動畫控件的一個常見用法是指出長時間作業期間的系統活動。 這是可能的,因為作業線程會在顯示 AVI 剪輯時繼續執行。 例如,當系統搜尋檔案時,Windows 檔案總管的 [尋找] 對話框會顯示移動放大鏡。

注意

如果您使用第 6 版 ComCtl32.dll,則不支持線程;請確定您的應用程式不會封鎖UI,否則不會發生動畫。

 

動畫控制可以顯示來自未壓縮 AVI 檔案的 AVI 剪輯,或是使用運行長度編碼(BI_RLE8)壓縮的 AVI 檔案。 您可以將 AVI 剪輯新增至應用程式作為 AVI 資源,或剪輯可以隨應用程式作為個別的 AVI 檔案。

注意

AVI 檔案或資源不得有音效通道。 動畫控件的功能非常有限,而且可能會變更。 如果您需要控制項來提供應用程式的多媒體播放和錄製功能,您可以使用 MCIWnd 控制件。 如需詳細資訊,請參閱 MCIWnd 視窗類別

 

本節討論下列主題。

動畫控件建立

動畫控件屬於 ANIMATE_CLASS 窗口類別。 您可以使用 CreateWindowCreateWindowEx 函式,或 Animate_Create 巨集來建立動畫控制元件。 巨集會將動畫控件放置在父視窗左上角,如果未指定 ACS_CENTER 樣式,則會根據 AVI 剪輯中框架的維度設定控件的寬度和高度。 如果指定 ACS_CENTERAnimate_Create 將控件的寬度和高度設定為零。 您可以使用 SetWindowPos 函式來設定控制元件的位置和大小。

如果您在對話框或對話框資源內建立動畫控件,當使用者關閉對話框時,控件會自動終結。 如果您在視窗中建立動畫控件,則必須明確終結控件。

關於動畫控件訊息

應用程式會將訊息傳送至動畫控件,以開啟、播放、停止和關閉對應的 AVI 剪輯。 每個訊息都有一或多個巨集可供您使用,而不是直接發送訊息。

建立動畫控件之後,應用程式會傳送 ACM_OPEN 訊息來開啟 AVI 剪輯,並將其載入記憶體中。 訊息會指定 AVI 檔案的路徑或 AVI 資源的名稱。 系統會從建立動畫控件的模組載入 AVI 資源。

如果動畫控制項具有 ACS_AUTOPLAY 樣式,控件會在開啟 AVI 檔案或 AVI 資源之後立即開始播放 AVI 剪輯。 否則,應用程式可以使用 ACM_PLAY 訊息來啟動 AVI 剪輯。 應用程式可以隨時傳送 ACM_STOP 訊息來停止剪輯。 當控件完成播放 AVI 剪輯或傳送 ACM_STOP 時,播放的最後一個畫面會維持顯示。

動畫控制元件可以將兩個通知碼傳送至其父視窗:ACN_STARTACN_STOP。 大部分的應用程式都不會處理任一通知。

若要關閉 AVI 檔案或 AVI 資源並將其從記憶體中移除,應用程式可以使用 Animate_Close 巨集,其會將檔名或資源名稱設為 NULL傳送 ACM_OPEN

默認訊息處理

本節描述 ANIMATE_CLASS 視窗類別之視窗程式所處理的視窗訊息。

消息 已執行處理
WM_CLOSE 釋放與動畫控件相關聯的 AVI 檔案或 AVI 資源。
WM_DESTROY 釋放 AVI 檔案或 AVI 資源、釋放內部數據結構,然後呼叫 DefWindowProc 函式。
WM_ERASEBKGND 使用靜態控件的目前背景色彩清除視窗背景。
WM_NCCREATE 設定和初始化內部資料結構,然後呼叫 DefWindowProc
WM_NCHITTEST 傳回 HTTRANSPARENT 點擊測試值。
WM_PAINT 在動畫控件中繪製 AVI 畫面格。
WM_SIZE 檢查控件是否有 ACS_CENTER 樣式。 如果控件沒有這樣做,則會呼叫 DefWindowProc。 否則,該程式會將動畫置於控制項的中央,無效化該控制項,然後呼叫 DefWindowProc