转会:http://blog.csdn.net/ellor/article/details/1714741

Timer事件,即定时器事件,是在游戏编程中。常常使用的一个事件。借助它能够产生定时运行动作的效果。这篇文章。就和大家一起探讨一下怎样使用SetTimer()函数。

1、SetTimer定义在那里?

SetTimer表示的是定义个定时器。依据定义指定的窗体,在指定的窗体(CWnd)中实现OnTimer事件。这样。就能够对应事件了。

SetTimer有两个函数。一个是全局的函数::SetTimer()

UINT SetTimer(

      HWND
hWnd,              // handle of window for timer messages

      UINT nIDEvent,          // timer identifier

      UINT uElapse,           // time-out value

      TIMERPROC lpTimerFunc       // address of timer procedure

);

当中hWnd 是指向CWnd的指针,即处理Timer事件的窗体类。

说道窗体类(CWnd),我们有必要来看一下CWnd的继承情况:CWnd有下面子类:CFrameWnd,CDialog,CView,CControlBar等类。这也意味这些类中都能够定义SetTimer事件。

同一时候,SetTimer()在CWnd中也有定义,即SetTimer()是CWnd的一个成员函数。

CWnd的子类能够调用该函数。来设置触发器。

UINT SetTimer( UINT nIDEvent, UINTnElapse, void (CALLBACK EXPORT*
lpfnTimer)(HWND, UINT, UINT, DWORD) );

參数含义:

nIDEvent:是指设置这个定时器的iD。即身份标志,这样在OnTimer()事件中。才干依据不同的定时器。来做不同的事件响应。这个ID是一个无符号的整型。

           nElapse

是指时间延迟。

单位是毫秒。

这意味着。每隔nElapse毫秒系统调用一次Ontimer()。

           void (CALLBACK EXPORT*
lpfnTimer)(HWND, UINT, UINT, DWORD)

Specifies the address of the application-suppliedTimerProc callback function that processes theWM_TIMER messages. If this parameter is
NULL, theWM_TIMER messages are placed in the application’s message queue and handled by theCWnd object。

意思是。指定应用程序提供的TimerProc回调函数的地址。来处里这个Timer事件。

假设是NULL。处理这个Timer事件的定义这个Timer的CWnd对象。他将WM_TIMER消息传递给这个对象。通过实现这个对象的OnTimer()事件来处理这个Timer事件。

所以,普通情况下,我们将这个值设为NULL。有设置该定时器的对象中的OnTimer()函数来处理这个事件。

相同的,我们再看看KillTimer()和OnTimer()的定义:

KillTimer同SetTimer()一样,他也有两个,一个是全局的::KillTimer(),还有一个是CWnd的一个函数。

他的声明例如以下:

//全局函数

BOOL KillTimer(

    HWND
hWnd,      // handle of window that installed timer

    UINT uIDEvent     // timer identifier

);

//CWnd函数

BOOL KillTimer( int nIDEvent);

这两个函数表示的意思是将iD为nIDEVENT的定时器移走。

使其不再作用。其使用方法如同SetTimer()一样。

再看看OnTimer()

CWnd::OnTimer

afx_msg void OnTimer( UINT nIDEvent);

ontimer()是响应CWnd对象产生的WM_Timer消息。nIDEvent表示要响应TIMER事件的ID。

二、Timer事件的使用:

由以上的分析。我们应该非常清楚,怎样来使用Timer事件。假定我们在视图上画一个渐变的动画。

我们首先在菜单条上加入一个菜单项。给这个菜单加入命令响应:

pView->SetTimer(1,1000,NULL);//pView是视图类的指针。这里是在视图类其中设置一个定时器。

完成注册,加入一类为视图WM_Timer对应于该事件。

在OnTimer()功能写在韩。对应行为。

如此。你可以让动画。

如何使用SetTimer MFC 不够具体的更多相关文章

  1. 怎样使用SetTimer MFC 够具体

    转自:http://blog.csdn.net/ellor/article/details/1714741 Timer事件,即定时器事件,是在游戏编程中,常常使用的一个事件.借助它能够产生定时运行动作 ...

  2. MFC的定时函数 SetTimer和结束killTimer

    什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了. 使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以 ...

  3. 基于MFC的Media Player播放器制作的SetTimer函数介绍

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. SetTimer是一种API函数,位于user32.dll中.你想每隔一段时间执行一件事的的时候,你可以使用它. 使用定时器的方法比 较简 ...

  4. MFC的定时器OnTimer

    本文总结来源出自鸡啄米,感谢鸡啄米.来源:http://www.jizhuomi.com/software/232.html 定时器简介 定时器,可以帮助开发者或者用户定时完成某项任务.在使用定时器时 ...

  5. MFC 使用位图按钮,并且设置按钮的鼠标悬停效果

    系统环境:Windows 10软件环境:Visual C++ 2013 SP1本次目的:使用位图按钮,并且设置按钮的鼠标悬停效果 在用MFC开发时,界面是比较不好开发的一块.VC中自带了CBitmap ...

  6. VC++ 6.0使用定时器SetTimer;

    背景: windows中使用VC++6.0制作了个交互界面向下位机定时发送数据及显示下位机上传的数据.定时发送则需要使用定时器. 本文只做记录如何调用,原理以后再深究. 正文: 首先,我生成的窗体类名 ...

  7. 将Cocos2dX渲染到MFC窗口上

    引用:http://www.cnblogs.com/windeer/archive/2012/11/18/2767750.html 引言 现在智能手机已经慢慢进入大众化,移动类应用开始火爆起来,游戏类 ...

  8. [游戏学习26] MFC 时间函数 画图形

    >_<:这里第一次介绍MFC的时间函数,功能和Win32里的计时器类似. >_<:这里还介绍了MFC的图形绘制函数,和Win32有一点区别 >_<:ABC.h #d ...

  9. [游戏学习28] MFC 时钟

    >_<:这是一个时钟小程序 >_<:通过调用获得系统时间然后经过计算得出当前时间,然后再以3个圆环表示时分秒. >_<:TAO_CLOCK.h class CMyA ...

随机推荐

  1. poj 2482 Stars in Your Window(扫描线)

    id=2482" target="_blank" style="">题目链接:poj 2482 Stars in Your Window 题目大 ...

  2. 《生活在Linux中》之:prefer function to alias in Bash

    在Bash环境中,定义了alias替换有时会产生不是想要的替换:e.g:;而定义function则能够避免这样的缺陷.

  3. Android定调的发展

    首先,介绍一下Android系统支持的铃声格式. 有下面几种: 64赫兹Midi,AAC.AAC+.AMR.WAV.MP3.Real Audio.WMA.OGG等格式. 将音频文件设置成铃声非常eas ...

  4. (大数据工程师学习路径)第一步 Linux 基础入门----Linux 下软件安装

    介绍 介绍 Ubuntu 下软件安装的几种方式,及 apt,dpkg 工具的使用. 一.Linux 上的软件安装 通常 Linux 上的软件安装主要有三种方式: 在线安装 从磁盘安装deb软件包 从二 ...

  5. 以正确的方式开源 Python 项目(转)

    大多数Python开发者至少都写过一个像工具.脚本.库或框架等对其他人也有用的工具.我写这篇文章的目的是让现有Python代码的开源过程尽可能清晰和无痛.我不是简单的指——“创建一个GitHub库,提 ...

  6. Hdu 3962 Microgene (AC自己主动机+矩阵)

    标题效果: 构造一个字符串,使得有两个和两个以上的目标串.长短L这一系列有多少串都. IDEAS: 只有全款减有1一些字符串,没有目标就是答案. 假定数据是非常小的,够用dp解.dp[i][j][k] ...

  7. ASP.NET AJAX简明教程

     当我们谈论Ajax时,首先想到的就是JavaScript下的Ajax,用来完成网页的交互,局部刷新工作,Microsoft的ASP.NET AJAX框架在Web的开发中承担着类似的角色,并简化了Ja ...

  8. js敏感词过滤

    var filterWord={ words:"", tblRoot:{}, //敏感词文件 file:"sensitiveWords.txt", //载入敏感 ...

  9. bigdata_一篇文看懂Hadoop

    本文转载:暂未找到原出处,如需署名 请联系 我们很荣幸能够见证Hadoop十年从无到有,再到称王.感动于技术的日新月异时,希望通过这篇内容深入解读Hadoop的昨天.今天和明天,憧憬下一个十年. 本文 ...

  10. 6天通吃树结构—— 第五天 Trie树

    原文:6天通吃树结构-- 第五天 Trie树 很有段时间没写此系列了,今天我们来说Trie树,Trie树的名字有很多,比如字典树,前缀树等等. 一:概念 下面我们有and,as,at,cn,com这些 ...