您的位置:首页 > 其它

定时器 settimer ontimer killtimer

2017-09-04 12:43 489 查看
文章出处:http://blog.sina.com.cn/s/blog_86f7b9c70101eob1.html

定时器简介

定时器,可以帮助开发者或者用户定时完成某项任务。在使用定时器时,我们可以给系统传入一个时间间隔数据,然后系统就会在每个此时间间隔后触发定时处理程序,实现周期性的自动操作。例如,我们可以在数据采集系统中,为定时器设置定时采集时间间隔为1个小时,那么每隔1个小时系统就会采集一次数据,这样就可以在无人操作的情况下准确的进行操作。

MFC定时器:VS2010编程中,我们可以使用MFC的CWnd类提供的成员函数SetTimer实现定时器功能,也可以使用Windows API函数SetTimer来实现。两者使用方法实际上很类似,但也有不同。

CWnd类的SetTimer成员函数只能在CWnd类或其派生类中调用,而API函数SetTimer则没有这个限制,这是一个很重要的区别。因为本教程主要是讲解MFC编程,所以这里就先重点讲解MFC定时器的用法。

一.我们就做一个gif 动画一样的吧! 这里的 gif分解后下载

http://pan.baidu.com/s/1bnkvNJp





1 .我们先新建一个mfc 基于对话框的应用程序。

2 . 删除对话框上的控件 , 改对话框的属性Border ->None



3 .添加一个消息:WM_TIMER -> OnTimer



4 .把图片放在工程的res目录下;

并在工程中添加资源,把这6张图片添加到资源目录下;然后右键->id= 资源符号 ->那几张图片的的id(我的是129-134)

5 .在class 中添加

class xxx
{
public:
int m_bitid;
}


并在构造函数中添加

xxxdlg::xxdlg()
{
m_bitid=128;    //这里我令他的初始值比id小一个数
}


6.在函数CxxxxDlg::OnInitDialog()中 添加:

{
this->SetTimer(1,100,NULL);   //设置定时器。

//这里时间100毫秒,可以自己调整,调节到适合的最好。

//killtimer 我这里没有用到。

}


定时器

killtimer

7.在函数 CxxxDlg::OnTimer(UINT_PTR nIDEvent) 函数中添加 :

点击ontimer介绍

{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CClientDC dc(this);
CRect rect;
CBrush brush;
CBitmap bitmap;
if(m_bitid<134)
m_bitid++;   ///让id++,循环读取这6张图片
else
m_bitid=129;    //要是+到了最后一张,我们让它回到第一张
bitmap.LoadBitmapW(m_bitid);     //加载图片资源,根据这个变化的ID
brush.CreatePatternBrush(&bitmap);
this->GetClientRect(rect);
switch (nIDEvent)
{
case 1: dc.FillRect(rect,&brush); break;
//这里当然就是贴图,定时器的响应
}
CDialogEx::OnTimer(nIDEvent);
}


8.运行,效果就出来了。像gif 一样的动。

mfc 的定时器应用很广泛,使用也并不困难,灵活运用可以做出来很炫的效果,定时器不只是做界面,用到其他地方也有很好的效果。


例子源码:http://pan.baidu.com/s/1gdqZoC7
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mfc 定时器