MFC添加gif动画
显示gif动画,这里用到CPictureEx类库,从网上能找到,下面一步一步来实现显示gif动画。
1、创建一个对话框,在对话框上添加一个图片控制和一个文控件,效果如下图:
2、图中的灰色块就是图片控件,要修改它的属性才会变成灰块,修改了两个属性,如下图:
3、选中图片控件,Ctrl + 双击,给它添加成员变量:
// CStatic m_gifCtrl; CPictureEx m_gifCtrl;
添加的变量是CStatic m_gifCtrl,我们把它改成CPictureEx m_gifCtrl,当然,要添加CPictureEx头文件,在对话框的头文件中添加:
#include "PictureEx.h"
4、在对话框的OnInitDialog()函数中添加如下代码就可以显示动态gif图片了:
1 BOOL CDlgWaiting::OnInitDialog() 2 { 3 CDialogEx::OnInitDialog(); 4 5 CString strFile = GetAbsolutePath() + _T("waiting.gif"); 6 if (m_gifCtrl.Load(strFile)) 7 { 8 m_gifCtrl.Draw(); 9 } 10 return TRUE; 11 }
注意:我用VS2012,如果把gif文件添加到项目的资源中,第6行使用Load资源的方式加载gif,那最后显示出来的是表态图片,并不是动态的图片。
这里我把gif图片放到了执行文件的目录下,所以调用GetAbsolutePath()函数来获取执行文件的目录,GetAbsolutePath()函数代码如下:
1 // 获取执行文件所有的路径 2 CString GetAbsolutePath() 3 { 4 CString strTemp; 5 TCHAR *pBuf = strTemp.GetBuffer(MAX_PATH); 6 7 ::GetModuleFileName(NULL, pBuf, MAX_PATH); 8 strTemp.ReleaseBuffer(); 9 strTemp = strTemp.Left(strTemp.ReverseFind(_T('\\'))) + _T('\\'); 10 11 return strTemp; 12 }
最后运行程序,我在另一个窗口中点击执行,弹出这个有gif动画的窗口,效果如下图:
用到的gif图片是,用http://preloaders.net/网站生成的。