關於動畫控件
動畫控件 是顯示 Audio-Video 交錯式 (AVI) 剪輯的視窗。 AVI 剪輯是一系列位圖畫面,例如電影。 動畫控制項只能顯示不包含音訊的 AVI 剪輯。
動畫控件的一個常見用法是指出長時間作業期間的系統活動。 這是可能的,因為作業線程會在顯示 AVI 剪輯時繼續執行。 例如,當系統搜尋檔案時,Windows 檔案總管的 [尋找] 對話框會顯示移動放大鏡。
注意
如果您使用第 6 版 ComCtl32.dll,則不支持線程;請確定您的應用程式不會封鎖UI,否則不會發生動畫。
動畫控制可以顯示來自未壓縮 AVI 檔案的 AVI 剪輯,或是使用運行長度編碼(BI_RLE8)壓縮的 AVI 檔案。 您可以將 AVI 剪輯新增至應用程式作為 AVI 資源,或剪輯可以隨應用程式作為個別的 AVI 檔案。
注意
AVI 檔案或資源不得有音效通道。 動畫控件的功能非常有限,而且可能會變更。 如果您需要控制項來提供應用程式的多媒體播放和錄製功能,您可以使用 MCIWnd 控制件。 如需詳細資訊,請參閱 MCIWnd 視窗類別。
本節討論下列主題。
動畫控件建立
動畫控件屬於 ANIMATE_CLASS 窗口類別。 您可以使用 CreateWindow 或 CreateWindowEx 函式,或 Animate_Create 巨集來建立動畫控制元件。 巨集會將動畫控件放置在父視窗左上角,如果未指定 ACS_CENTER 樣式,則會根據 AVI 剪輯中框架的維度設定控件的寬度和高度。 如果指定 ACS_CENTER,Animate_Create 將控件的寬度和高度設定為零。 您可以使用 SetWindowPos 函式來設定控制元件的位置和大小。
如果您在對話框或對話框資源內建立動畫控件,當使用者關閉對話框時,控件會自動終結。 如果您在視窗中建立動畫控件,則必須明確終結控件。
關於動畫控件訊息
應用程式會將訊息傳送至動畫控件,以開啟、播放、停止和關閉對應的 AVI 剪輯。 每個訊息都有一或多個巨集可供您使用,而不是直接發送訊息。
建立動畫控件之後,應用程式會傳送 ACM_OPEN 訊息來開啟 AVI 剪輯,並將其載入記憶體中。 訊息會指定 AVI 檔案的路徑或 AVI 資源的名稱。 系統會從建立動畫控件的模組載入 AVI 資源。
如果動畫控制項具有 ACS_AUTOPLAY 樣式,控件會在開啟 AVI 檔案或 AVI 資源之後立即開始播放 AVI 剪輯。 否則,應用程式可以使用 ACM_PLAY 訊息來啟動 AVI 剪輯。 應用程式可以隨時傳送 ACM_STOP 訊息來停止剪輯。 當控件完成播放 AVI 剪輯或傳送 ACM_STOP 時,播放的最後一個畫面會維持顯示。
動畫控制元件可以將兩個通知碼傳送至其父視窗:ACN_START 和 ACN_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。 |