本帖則將討論如何在MFC的對話框里顯示GIF動畫圖片。一些關於傳統控件的美化方法正在研究當中會陸續發帖的。
這是本帖用到的一個VS2008例程。
一.顯示GIF圖片控件類的介紹:
無論是在VC6.0還是在VS2008中,都沒有控件能顯示GIF動畫圖片。能顯示一些靜態圖片的只是Picture控件。本例程用到的GIF動畫顯示控件類是PictureEX。其定義文件是PictureEx.h,類的實現文件是PictureEx.cpp。有關該類的成員函數和方法說明如下:
BOOL Draw() ——繪制圖像或繼續動畫顯示。
void Stop() ——停止動畫;
void UnLoad() —— 停止動畫並釋放所有資源;
void SetBkColor(COLORREF) ——為透明區域設置填充顏色;
COLORREF GetBkColor() ——獲取當前填充顏色;
BOOL IsGIF() —— 如果當前圖像是 GIF 則返回 TRUE;
BOOL IsAnimatedGIF() ——如果當前圖像是動畫 GIF,則返回TRUE;
BOOL IsPlaying() ——如果當前圖像是以動畫方式顯示則返回TRUE;
SIZE GetSize() ——返回圖像尺寸。
int GetFrameCount() ——返回當前圖像的幀數量;
BOOL GetPaintRect(RECT *lpRect) ——返回當前繪制的矩形。
BOOL SetPaintRect(const RECT *lpRect) ——設置當前繪制的矩形;
二.編程應用步驟:
1.首先在網上下載兩個小的GIF動畫圖片,由於VS2008無法識別這樣的文件的擴展名,會彈出輸入文件類型的擴展名,輸入一個字符串即可。這個字符竄在后面的代碼中會用到。
2.建立一個對話框的MFC工程。將下載的資源文件拷貝至工程目錄的Res文件夾下,然后用添加資源的方法將這兩個資源文件加載到你的工程中。
3.這一步非常重要。首先在我的例程里拷貝PictureEx.h和PictureEx.cpp到你的工程目錄下,然后在將該類添加到你的工程中。
4.在對話框面板上添加兩個Picture控件分別給它們建立Control型的Static變量。我的例程里名字分別為m_gifpicture和m_girl。
5.一切准備工作以經完成。下面是添加代碼:
在對話框類定義文件(我的例程是GifPictureDlg.h)中添加一句:
找到下面的兩行:
Cstatic m_girl;
將其改為:
CPictureEx m_girl;
在對話框的實現文件(我的例程是GifPictureDlg.cpp)中的對話框初始化函數BOOL CGifPictureDlg::OnInitDialog()中添加如下代碼:
m_gifpicture.Draw();
if (m_girl.Load(MAKEINTRESOURCE(IDR_GIF2),_T("gif")))
m_girl.Draw();
下面編譯該工程並運行一下,可以看到GIF動畫。我的運行結果如下(由於是截屏的所以沒有動畫效果):
在本論壇的本版塊里,我陸續的發了兩個這方面的帖子,列舉如下:
1.如何創建XP風格的按鈕控件 http://bbs.bccn.net/thread-292048-1-1.html
2.MFC顯示Flash動畫的編程實現 http://bbs.bccn.net/thread-292047-1-1.html