原文地址为: VC定时器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的子类均可以定义SetTimer事件。

②SetTimer() 在CWnd中也有定义,即SetTimer()是CWnd的一个成员函数。CWnd的子类可以调用该函数,来设置触发器。

UINT SetTimer(UINT nIDEvent, UINT nElapse, 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-supplied TimerProc callback function that processes the WM_TIMER messages. If this parameter is NULL, the WM_TIMER messages are placed in the application’s message queue and handled by the CWnd object。

意思是,指定应用程序提供的TimerProc回调函数的地址,来处里这个Timer事件。如果是NULL,系统将交由OnTimer()来处理这个Timer事件。

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

例:SetTimer(1,1000,NULL);

如果我要加入两个或者两个以上的 timer怎么办? 继续用SetTimer函数吧,上次的timer的ID是1,这次可以是2,3,4。

SetTimer(2,1000,NULL);

SetTimer(3,500,NULL);

WINDOWS会协调他们的。当然onTimer函数体也要发生变化,要在函数体内添加每一个timer的处理代码:

onTimer(nIDEvent)
{
    switch(nIDEvent)
    {
        case 1:........;
            break;
        case 2:.......;
            break;
        case 3:......;
            break;
    }
}

二、我们再看看 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。
转载请注明本文地址: VC定时器SetTimer函数

VC定时器SetTimer函数相关推荐

  1. VC++中定时器SetTimer函数的应用总结

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

  2. vc中定时器的使用 (2)SetTimer函数的使用

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

  3. VC API常用函数简单例子大全(1-89)

    第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄 函数的定义:HWND WINAPI FindWindow(LPCSTR lpClassName ,LPCST ...

  4. VC API 常用函数简单例子大全

    第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄 函数的定义:HWND WINAPI FindWindow(LPCSTR lpClassName ,LPCST ...

  5. VC API常用函数

    第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄, 这个函数的定义是这样的 HWND WINAPI FindWindow(LPCSTR lpClassName ...

  6. delphi中setTimer函数的用法

    delphisetTimer函数用来做定时器,可以实现每隔一段时间运行某个程序,需要用到两个函数,SetTimer函数和KillTimer函数. 下面是一个简单的例子: var i :Integer ...

  7. windows中定时操作(SetTimer函数用法)

    最近需要在服务端定时执行某个操作,于是需要用到SetTimer函数.当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了. 使用定时器的方法比较简单,通常告诉WINDOWS一个时间间 ...

  8. MFC定时器SetTimer

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

  9. 圆弧的函数c语言,VC++中Arc函数画圆弧

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:VC++中Arc函数画圆弧回答:BOOL Arc(int x1,int y1,int x2,int y2,int x3,int y3 ...

  10. 前端JavaScript DOM BOM 自学复盘 D1(DOM-获取DOM元素、修改HTML标签/表单/css样式属性、定时器-间歇函数)

    内容概要 1. Web API 基本认知 1.1. 作用和分类 1.2. 什么是DOM 1.3. DOM作用 1.4 DOM树 1.4.1. DOM树是什么? 1.4.2. DOM 树的作用 1.5 ...

最新文章

  1. word2vec介绍
  2. 【Java】睡眠排序
  3. 飞鸽传书写每行都认认真真
  4. 利用pgAgent创建定时任务
  5. 读书笔记 - 《我的美国之路》
  6. python脚本字符串拼接_Python脚本分割和连接字符串
  7. python处理excel的优势-用Python读写Excel文件的方式比较
  8. SpringMVC的工作原理及组件
  9. rss订阅_RSS订阅
  10. 点线面的意义_论文:点线面在设计中的运用
  11. 资深营销团队管理专家——文彬
  12. 救灾帐篷惊现高档小区
  13. 深入浅出精讲面向对象设计七大原则,彻底领悟设计背后思想
  14. The system is running out of memory. Please close applications to free memory
  15. Vue2监测数据的原理
  16. Linux 与 Git(github篇)
  17. 微信iPad协议,个人号API开发
  18. 程序员如何靠卖源码和主题来赚钱
  19. 桃源话六级考试参考答案
  20. 仿微信图片缩放效果以及listview反弹效果

热门文章

  1. python 抽签程序_抽签程序源码
  2. WPF解析Fnt字体
  3. 控制理论中的几种稳定性介绍
  4. Chrome插件-Dark reader,护眼的黑暗模式浏览器
  5. nodejs 下载最新版本
  6. 全国省市区数据SQL - 2017年数据(三级联动)
  7. AIML自己的学习笔记
  8. 关于手眼标定的误差计算
  9. matlab软件进行仿真验证,matlab仿真软件
  10. 使用VUE实现的数独游戏