QueryPerformanceCounter()这个函数返回高精确度性能计数器的值,它可以以微妙为单位计时.
// 微秒级延时 参数: 微秒
void Control::MySleep(DWORD dwUs)
{
LARGE_INTEGER dwStart;
LARGE_INTEGER dwCurrent;
LARGE_INTEGER dwFrequence;
LONGLONG counter;
if (!QueryPerformanceFrequency(&dwFrequence))
{
return;
}
QueryPerformanceCounter(&dwStart);
counter = dwFrequence.QuadPart * dwUs / 1000 / 1000;
dwCurrent = dwStart;
while ((dwCurrent.QuadPart - dwStart.QuadPart) < counter)
{
QueryPerformanceCounter(&dwCurrent);
}
}
while (1)
{
SYSTEMTIME sys;
GetLocalTime(&sys);
printf("%4d/%02d/%02d %02d:%02d:%02d.%03d 星期%1d\n", sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds, sys.wDayOfWeek);
MySleep(1000);
GetLocalTime(&sys);
printf("%4d/%02d/%02d %02d:%02d:%02d.%03d 星期%1d\n", sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds, sys.wDayOfWeek);
}