定时器 settimer ontimer killtimer

文章出处: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值