设置计时器代码
HANDLE hTimer;
LARGE_INTEGER li;
const int nOneSecond = 10000000;
li.QuadPart = -1 * nOneSecond;
li.QuadPart *= 60;

hTimer = CreateWaitableTimer(NULL, FALSE, NULL);
SetWaitableTimer(hTimer, &li, 0, NULL, NULL, FALSE); HANDLE Handles[2];
Handles[0] = g_hExitThreadEvt;
Handles[1] = hTimer; while (1)
{
         DWORD dwResult = \
WaitForMultipleObjects(2, Handles, FALSE, INFINITE);

switch (dwResult)
{
case WAIT_OBJECT_0:
// Ok! I can exit now...
CloseHandle(hTimer);
SetEvent(g_hHistoryThreadExit);
return 0;
case WAIT_OBJECT_0+1:
                           //处理函数
break;
default:
break;
}
SetWaitableTimer(hTimer, &li, 0, NULL, NULL, FALSE);
}定时器为一分钟触发一次,现在像让定时器在整分的时候触发。现在在处理函数里的时间不是整分。

解决方案 »

  1.   

    网上找资料说下面的代码可以 测试后貌似还是不行啊 SYSTEMTIME sysTime;
    HANDLE hTimer;
    LARGE_INTEGER li;
      GetLocalTime(&sysTime);
      sysTime.wSecond = 0;
      sysTime.wMilliseconds = 0;
      FILETIME fileTime;
      SystemTimeToFileTime(&sysTime,&fileTime);
      li.HighPart = fileTime.dwHighDateTime;
      li.LowPart = fileTime.dwLowDateTime;
      

  2.   

    给你提个思路,就是当定时器启动的时候你可以判断一下和下一分钟相差的秒数,然后在SetWaitableTimer中把定时器的响应等待时间补全,在定时启动的位置上添上60S。
      

  3.   

    LARGE_INTEGER 这个结构的内容是什么啊QuadPart如果是时间间隔 那LowPart,HighPart分别代表什么意思啊