SetTimer()設定的定時器的定時時間>50ms,這在即時資料採集中是不夠的。用多媒體定時器能精確到1ms,效果很好。//定時器------------------------#define TIMER_ACCURACY 1int TimerID;UINT wAccuracy;int InitTimer();int ReleaseTimer();void PASCAL TimerProc(UINT wTimerID,UINT msg,DWORD dwUser,DWORD dwParam,DWORD dlParam); int InitTimer(){ TIMECAPS tc; if(timeGetDevCaps(&tc,sizeof(TIMECAPS))==TIMERR_NOERROR) //擷取系統的取值範圍 { wAccuracy=min(max(tc.wPeriodMin,TIMER_ACCURACY),tc.wPeriodMax); timeBeginPeriod(wAccuracy); return 1; } else { MessageBox(NULL,"定時器無法使用!",NULL,NULL); return 0; }} int ReleaseTimer(){ timeKillEvent(TimerID); timeEndPeriod(wAccuracy); return 1;} /*名稱:TimerProc 功能:定時處理 參數:wTimerID定時器ID,msg訊息參數,dwUser使用者,dwParam參數1,dlParam參數2*/void PASCAL TimerProc(UINT wTimerID,UINT msg,DWORD dwUser,DWORD dwParam,DWORD dlParam){}//開啟定時器TimerID=timeSetEvent(1000,wAccuracy,(LPTIMECALLBACK)TimerProc,(DWORD)0,TIME_PERIODIC); //1000為定時時間,表示1000ms