zoukankan      html  css  js  c++  java
  • SetTimer and CreateWaitableTimer的例子(静态函数设置为回调函数,瑞士的网页,有点意思)

    Timers (SetTimer and CreateWaitableTimer) in Windows

     

    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

  • 相关阅读:
    POJ 1015 Jury Compromise【DP】
    POJ 1661 Help Jimmy【DP】
    HDU 1074 Doing Homework【状态压缩DP】
    HDU 1024 Max Sum Plus Plus【DP,最大m子段和】
    占坑补题。。最近占的坑有点多。。。
    Codeforces 659F Polycarp and Hay【BFS】
    Codeforces 659E New Reform【DFS】
    Codeforces 659D Bicycle Race【计算几何】
    廖大python实战项目第四天
    廖大python实战项目第三天
  • 原文地址:https://www.cnblogs.com/findumars/p/5835901.html
Copyright © 2011-2022 走看看