WEB开发网
开发学院软件开发VC 在VC应用程序中插入微型动画 阅读

在VC应用程序中插入微型动画

 2010-05-25 20:37:00 来源:WEB开发网   
核心提示:2、在状态条上显示动画由于状态条也是窗口,所以也可以在其上显示动画,在VC应用程序中插入微型动画(3),状态条时主窗口的子窗口,在CMainFrame类中可以看到下列代码:protected: // control bar embedded membersCStatusBar m_wndStatusBar;所以为了在状

2、在状态条上显示动画

由于状态条也是窗口,所以也可以在其上显示动画。状态条时主窗口的子窗口,在CMainFrame类中可以看到下列代码:

protected: // control bar embedded members

CStatusBar m_wndStatusBar;

所以为了在状态条上显示动画,其编程代码应在CMainFrame类中加入。首先创建资源文件和图像列表类,具体方法和代码见View类客户区绘制动画一节,此处不再重复。下面进给出ON_TIMER的响应函数:

void CMainFrame::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(m_Play>m_ImageNumber)
m_Play=0;//如果图画为最后一个,显示第一幅图片
CDC *pDC=this->m_wndStatusBar.GetDC();
ASSERT(pDC!=NULL);
pt1.x=1;
pt1.y =1;
m_ImageList1.Draw(pDC,m_Play,pt1,ILD_TRANSPARENT);
ReleaseDC(pDC);
m_Play++;
CFrameWnd::OnTimer(nIDEvent);
}

上述代码将在状态条左上方播放动画。

三、在工具栏上播放动画

由于工具栏的性质与状态条差不多,其播放动画的方法也相似,下面进给出ON_TIMER的响应函数:

void CMainFrame::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(m_Play>m_ImageNumber)
m_Play=0;//如果图画为最后一个,显示第一幅图片
CRect rect;
CDC *pDC;
pDC=this->m_wndToolBar.GetDC();
ASSERT(pDC!=NULL);
this->m_wndToolBar.GetClientRect(&rect);//获得显示有效区域
pt1.x =rect.right -64; //将显示位置定在最右边
pt1.y=1;
m_ImageList1.Draw(pDC,m_Play,pt1,ILD_TRANSPARENT);
ReleaseDC(pDC);
m_Play++;
CFrameWnd::OnTimer(nIDEvent);
}

上述代码将在工具栏右上方播放动画。但如仔细观察,动画的位置并不是靠近窗口最右边,这是因为工具栏的窗口有边界,采用如下方法,可以把画面移到窗口右边:

pDC=GetDC ();//获得CMainFrame的画图设备指针
ASSERT(pDC!=NULL);
this->GetClientRect(&rect);
pt1.x =rect.right-64 ;
pt1.y=rect.top+3 ;
m_ImageList1.Draw(pDC,m_Play,pt1,ILD_TRANSPARENT);
ReleaseDC(pDC);

这是因为工具栏占据的位置属于CMainFrame的客户区。

4、使图标变成动画

在CWnd类中有一个函数

HICON SetIcon( HICON hIcon, BOOL bBigIcon );

可以改变窗进口的图标,所以您可以通过使用该函数不断的改变图标使图标动起来,效果像GetRight一样。 在OnTimer函数中加入下列代码:

SetIcon(m_ImageList1.ExtractIcon(m_Play),FALSE);

就可以使图标动起来,当然为了使程序工作的更好,您最好重建一套图标资源。

在VC中另一可以改变图标的函数是SetClassLong(),又兴趣的朋友可以一试。

上一页  1 2 3 

Tags:VC 应用程序 插入

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接