首页 > 代码库 > SetTimer and CreateWaitableTimer的例子(静态函数设置为回调函数,瑞士的网页,有点意思)

SetTimer and CreateWaitableTimer的例子(静态函数设置为回调函数,瑞士的网页,有点意思)

 

Timers (SetTimer and CreateWaitableTimer) in Windows

<iframe id="aswift_0" name="aswift_0" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="160" height="600"></iframe> 

SetTimer

The following example creates a timer (that is not attached to a window) whose Timer Procedure creates 20 Message Boxes
#include <windows.h>class foo_class {  static int counter;public:  static void  __stdcall timer_proc(HWND,unsigned int, unsigned int, unsigned long) {    if (counter++ < 20)      MessageBox(0,"Hello","MessageBox",0);    else      PostQuitMessage(0);  }};int foo_class::counter=0;WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) {int iTimerID = SetTimer(0, 0, 300, foo_class::timer_proc);  MSG m;  while (GetMessage(&m,0,0,0)) {    TranslateMessage(&m);    DispatchMessage(&m);   }  return 1;}

CreateWaitableTimer

This example demonstrates how to use Timers in windows. A timer will be set that is signalled for the first time 2 seconds after the first call to CreateWaitableTimer and then is signalled every 3/4th of a second.
#define _WIN32_WINNT 0x0400#include <windows.h>#include <process.h>#include <stdio.h>unsigned __stdcall TF(void* arg) {  HANDLE timer=(HANDLE) arg;  while (1) {    WaitForSingleObject(timer,INFINITE);    printf(".");  }}int main(int argc, char* argv[]) {  HANDLE timer = CreateWaitableTimer(    0,    false, // false=>will be automatically reset    0);    // name  LARGE_INTEGER li;  const int unitsPerSecond=10*1000*1000; // 100 nano seconds  // Set the event the first time 2 seconds  // after calling SetWaitableTimer  li.QuadPart=-(2*unitsPerSecond);  SetWaitableTimer(    timer,    &li,    750,   // Set the event every 750 milli Seconds    0,    0,    false);  _beginthreadex(0,0,TF,(void*) timer,0,0);  // Wait forever,   while (1) ;  return 0;}

 

http://www.adp-gmbh.ch/win/misc/timer.html

 

SetTimer and CreateWaitableTimer的例子(静态函数设置为回调函数,瑞士的网页,有点意思)