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

  • 相关阅读:
    Spring MVC 体系结构和处理请求控制器
    Spring配置补充
    MyBatis与Spring的整合
    Ioc和AOP使用扩展
    JS 节流
    JS写返回上一级
    iframe父页面获取子页面的高度
    博客编写计划
    正则表达式
    实用 SQL 命令
  • 原文地址:https://www.cnblogs.com/findumars/p/5835901.html
Copyright © 2011-2022 走看看