2010-01-24 59 views

回答

9

调用SetTimer函数。这允许您指定一个回调函数,或让Windows发布一条WM_TIMER消息。

+1

按照nobugz - 这不会在控制台应用程序或非GUI线程工作。线程必须抽取消息来生成SetTimer回调。 – 2010-01-26 21:33:52

+0

SetTimer不是高分辨率(即<20ms)定时器。 CreateTimerQueueTimer更好但消耗更多资源。 – 2013-06-20 21:44:26

4

SetTimer。需要一个窗口句柄,并且如果您没有泵送消息,定时器将不会被发送。

5

如果您编写GUI代码,则无法知道这一点。这使得您可能想要使用CreateTimerQueueTimer()。

+0

这是控制台应用程序 – SomeUser 2010-01-24 21:45:51

+2

是的,CreateTimerQueueTimer是你的朋友。请注意,回调是在线程池线程上执行的,请使用适当的锁定。 – 2010-01-24 21:57:15

+0

也可以在控制台应用程序中使用CreateWaitableTimer。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms682492(v=vs.85).aspx – 2014-05-28 05:57:31

5

为CreateTimerQueueTimer一个很好的例子Here

另一个是HERE

0

呼叫的setTimer()功能。假设我叫

SetTimer(hWnd,POST_CBIT_TIMER,500,NULL); 

回调函数是

UINT nIdEvent ;//global member variable 

case WM_TIMER: 

if(nIDEvent == POST_CBIT_TIMER) 
{ 

KillTimer(hParent,POST_CBIT_TIMER); 


} 
break;