转会: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. TCP/IP 网络编程(六)

    流程模型: 线程模型: 线程的创建和运行流程 #include <pthread.h> int pthread_create(pthread_t * restrict thread, co ...

  2. HTML基金会2----联系,像, 第,对齐

    ios讨论组1团:135718460 在web开发中.排版,布局非常重要,因此我们要把基础的东西打坚固,大家不要 慌,慢慢来. 直接把代码拿过去,直接就能够执行的. 1.标题 2.段落 3.HTML ...

  3. 3.Chrome数据同步服务分析--server一片

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGVlcjE2OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  4. [LeetCode] 036. Valid Sudoku (Easy) (C++)

    指数:[LeetCode] Leetcode 解决问题的指数 (C++/Java/Python/Sql) Github: https://github.com/illuz/leetcode 036. ...

  5. 为代码减负之&lt;二&gt;存储过程(SQL)

    在上篇博客中介绍到了触发器的使用,而且当中也提到了触发器是个特殊的存储过程,那么什么是存储过程呢?他们 两个又究竟有什么差别呢? 事实上最基本的差别就是,触发器是当满足条件时系统自己主动运行的,而存储 ...

  6. 开展project 正常的生活之路

    相对刚走出学校的学生在其他行业工作,竞争力的薪酬,同时.并不断地不仅学习更新专业知识让你感到生活的充实,更满足了你那不让外人知的虚荣心.在刚出校门的几年中,你常常回头看看被你落在后面的同学们,在内心怜 ...

  7. easyUI 插件写法 ---Validatebox 插件为例

    easyui 的每个组件都有属性.方法和事件.用户可以很容易地对这些组件进行扩展. js地址:jquery-easyui-1.3.3/jeasyui-extensions/jeasyui.extens ...

  8. Android-支付宝快捷支付

    支付宝的快捷支付Android版业务流程比較麻烦,出现的意外情况比較多.在此,简单说下开发流程以及出现错误的解决方式; 1.注冊支付业务.这里不在赘述.建立数据安全传输所须要的私钥公钥,这里採用的是R ...

  9. div元素上下左右居中

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  10. AspNet.WebAPI.OData.ODataPQ

    AspNet.WebAPI.OData.ODataPQ实现WebAPI的分页查询服务 AspNet.WebAPI.OData.ODataPQ实现WebAPI的分页查询服务-(个人拙笔) AspNet. ...