關於動畫控件
動畫 控制件 是一個視窗,可顯示音訊視訊交錯 (AVI) 剪輯。 AVI 剪輯是一系列位圖畫面,例如電影。 動畫控制項只能顯示不包含音訊的 AVI 剪輯。
動畫控件的一個常見用法是指出長時間作業期間的系統活動。 這是可能的,因為作業線程會在顯示 AVI 剪輯時繼續執行。 例如,當系統搜尋檔案時,Windows 檔案總管的 [尋找] 對話框會顯示移動放大鏡。
注意
如果您使用ComCtl32.dll第 6 版,則不支持線程;請確定您的應用程式不會封鎖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。 |