SetTimer定时器与WM_TIMER窗口消息详解

转载 2011年01月20日 17:45:00

SetTimer的函数原型为:

 

        UINT_PTR  SetTimer( HWND  hWnd, UINT_PTR  nIDEvent, UINT uElapse, TIMERPROC  lpTimerFunc);

 

        其中hWnd是和timer关联的窗口句柄,此窗口必须为调用SetTimer的线程所有;如果hWnd为NULL,没有窗口和timer相关联,并且nIDEvent参数被忽略。

        nIDEvent是timer的标志,非零值;如果hWnd非NULL而且与timer相关联的窗口已经存在一个为此标志的timer,则此次SetTimet调用将用新的timer代替原来的timer。timer标志和窗口相关,两个不同的窗口可以拥有nIDEvent相同的timer。

        uElapse是以毫秒为单位的时间数,范围为1ms到4,294,967,295ms,这个值只是windows每隔多久时间给程序发送WM_TIMER消息。

        lpTimerFunc是一个回调函数的指针,如果lpTimerFunc为NULL,系统将向应用程序队列发送WM_TIMER消息;如果lpTimerFunc指定了一个值,DefWindowProc将处理WM_TIMER消息时调用这个lpTimerFunc所指向的回调函数, 所以即使使用TimerProc代替WM_TIMER也需要向窗口分发消息。

        SetTimer的返回值:如果hWnd为NULL,返回值为新建立的timer的ID,如果hWnd非NULL,返回一个非0整数,如果SetTimer调用失败则返回0。

           

            KillTimer的函数原型为:BOOL KillTimer (  HWND  hWnd , UINT_PTR  uIDEvent ) ;

           

WM_TIMER消息:

消息参数:wParam和lParam

        wParam为计时器ID,wParam的值将随传递到窗口过程中的WM_TIMER消息的不同而不同。

        lParam为指向TimerProc的指针,如果调用SetTimer时没有指定TimerProc,则lParam为NULL。

       

三种使用计时器的方法:

        I.将第四个参数lpTimerFunc置为NULL而不使用TimerProc;在窗口过程中处理WM_TIMER消息。

        II. 将第四个参数lpTimerFunc指向TimerProc函数。使用TimerProc函数处理WM_TIMER消息;

        III.第一个参数hWnd设为NULL,第四个参数设为TimerProc函数指针。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mallocguy/archive/2009/01/03/3691272.aspx

fwrite和fread函数的用法小结(怎么样以二进制形式保存和读取文件)

fwrite和fread是以记录为单位的I/O函数,fread和fwrite函数一般用于二进制文件的输入输出。 [cpp] view plaincopyprint? ...
  • kaka_36
  • kaka_36
  • 2014年11月14日 16:37
  • 5444

C++中的定时器-SetTimer

先请看SetTimer这个API函数的原型 UINT_PTR SetTimer( HWND hWnd, // 窗口句柄 UINT_PTR nIDEvent, ...
  • Nancy_m
  • Nancy_m
  • 2013年01月25日 15:30
  • 43532

孙鑫VC++深入详解:Lesson5 Part4 屏幕字符串滚动输出,DrawText,SetTimer,WM_Timer消息

滚动字母,修改输出字幕颜色,定时器 在onCreate中添加一个定时器,即SetTimer(1,100,NULL) 再在类CDrawView中添加消息WM_TIMER的响应函数OnTimer 每间隔...
  • sergery
  • sergery
  • 2013年07月04日 19:32
  • 3029

Win32 计时器消息 - WM_TIMER,SetTimer

注:以下内容为学习笔记,多数是从书本、资料中得来,只为加深印象,及日后参考。然而本人表达能力较差,写的不好。因非翻译、非转载,只好选原创,但多数乃摘抄,实为惭愧。但若能帮助一二访客,幸甚! ...

MFC中SetTimer,ON_WM_TIMER和OnTimer的关系和使用

定时器在VC中的使用频繁,以下讨论定时器的使用方法。 定时器的原型是: //windows API  函数WINUSERAPI UINT WINAPI SetTimer ( HWND hWnd ...

MFC中的SetTimer、ON_WM_TIMER 和OnTimer的关系和使用

定时器在VC中的使用频繁,以下讨论定义器的使用方法。 定时器的原型是: WINUSERAPI UINT WINAPI SetTimer ( HWND hWnd , UINT nIDEvent, U...

无窗口的定时器(SetTimer)

无窗口的定时器(SetTimer)暂时未实现使用类成员作为处理函数#pragma comment(lib,"user32") #include #include #include #includ...

用户定时器SetTimer及Windows消息的传递处理

#include #include #include int count =0; VOID CALLBACK TimerProc(HWND hwnd,U...

VC++ WM_TIMER 定时器使用方法

定时器在VC中的使用频繁,以下讨论定义器的使用方法。   定时器的原型是:   WINUSERAPI UINT WINAPI SetTimer ( HWND hWnd , UINT nID...

【VS2010学习笔记】【函数学习】一(MFC+OpenCV2.4.7读取摄像头之WM_TIMER消息处理函数的添加问题)

在启动定时器后,就需要添加定时器的消息处理函数,基本的步骤就是:在VS中,用户界面设计右击打开Class Wizard, 切换到Message选项卡,然后找到WM_TIMER这个message, 双击...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SetTimer定时器与WM_TIMER窗口消息详解
举报原因:
原因补充:

(最多只允许输入30个字)