网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
在VC应用程序中插入微型动画
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
像列表:


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函数中,增加在窗口撤销时中止定时器的代码。


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(),又兴趣的朋友可以一试。

  • 上一篇资讯: VC下实现DirectSound
  • 下一篇资讯: 关于VC中的DLL的编程
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号