#define _WIN32_WINNT 0x0400
#include <windows.h>
原因是:这个函数在winbase.h中是条件编译,需要_WIN32_WINNT >= 0x0400才声明CreateWaitableTimer,但是在windows.h和winbase.h中都未定义
CreateWaitableTimer实例
#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