可以不用接收WM_TIMER消息而直接来定时控制事件的发生么?

解决方案 »

  1.   

    是没有什么意义,WM_TIMER要方便的多,为了预防特殊需要还是把代码给出来吧:HANDLE hTimer = CreateWaitableTimer(NULL, FALSE, NULL);while(TRUE) 
    {
         DWORD dwWait = MsgWaitForMultipleObjects(1, &hTimer, FALSE, INFINITE, QS_ALLEVENTS);
         if (dwWait == WAIT_OBJECT_0)
              // Get the timer event...
         else if (dwWait == WAIT_OBJECT_0 + 1)
         {
              MSG msg;
              if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
              {
                   TranslateMessage(&msg);
                   DispatchMessage(&msg);
              }
              if(msg.message = WM_QUIT)
              {
                   PostQuitMessage(msg.wParam);
                   break;
              }
         }
    }
      

  2.   

    线程 + Sleep是个选择,如果你需要用很多这种定时器,那么用线程 + Sleep也许是你的最佳选择,因为系统Timer是有限资源,不能无限使用的,但线程自己控制,很容易挂很多Timer,虽然挂多了效率下降,但这毕竟是个可以的选择。