在VC应用程序中插入微型动画
2010-05-25 20:37:00 来源:WEB开发网二、编程与实现
首先,建立图表资源。在VC6.0中利用资源编辑器,建立几幅图表,IDI_ICON1、IDI_ICON2、IDI_ICON3....,在编辑图标时选者Custom,如图1,将图标设置成大小为64X32,见图2。由于Windows的各个部件不完全相同,其实现方法也不完全相同,下面对在窗口不同位置显示动画的方法分别介绍。
1、在View类客户区绘制动画
在类的定义文件中加入下列变量:
POINT pt1;//图像显示的位置
int m_Play; //将要显示图像的索引
void CreateImageList();//创建图像列表的函数
CImageList m_ImageList1;//图像列表对象
int m_ImageNumber; //图像列表中图像的总数目
首先在口在函数时初始化pt1,m_Play,m_ImageNumber:
CImageView::CImageView()
{
// TODO: add construction code here
pt1.x =1;
pt1.y =1;
m_Play=0;
m_ImageNumber=0;
}
CreateImageList()的实现如下:
void CImageView::CreateImageList()
{
m_ImageList1.Create (64,32,ILC_COLOR,5,2);
HICON hIcon = ::LoadIcon(AfxGetResourceHandle(),
MAKEINTRESOURCE(IDI_ICON1));
m_ImageList1.Add(hIcon);
m_ImageNumber++;
hIcon = ::LoadIcon(AfxGetResourceHandle(),
MAKEINTRESOURCE(IDI_ICON2));
m_ImageList1.Add(hIcon);
m_ImageNumber++;
hIcon = ::LoadIcon(AfxGetResourceHandle(),
MAKEINTRESOURCE(IDI_ICON3));
m_ImageList1.Add(hIcon);
m_ImageNumber++;
.........//把您要播放的所有资源加入图像列表。
}
在OnCreate函数中设置计时器,并创建图像列表:
int CImageView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
CreateImageList();
SetTimer(1,500,NULL);
return 0;
}
响应ON_TIMER消息,显示动画:
void CImageView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CDC *pDC=GetDC();
if(m_Play>m_ImageNumber)
m_Play=0;
m_ImageList1.Draw(pDC,m_Play,pt1,ILD_TRANSPARENT);
m_Play++;
ReleaseDC(pDC);
CView::OnTimer(nIDEvent);
}
最后别忘了在OnDestroy函数中,增加在窗口撤销时中止定时器的代码。
更多精彩
赞助商链接