不知道各位有沒有經驗
在使用sleep之類的函數時,想要暫停幾個ms(千分之一秒),但是暫停的時間總是過長。
例如想要暫停3ms,卻發現暫停了20ms。
其實這是windows timer內部設定的問題。
可以透過以下方法解決:
TIMECAPS tc;
UINT wTimerRes;
if (timeGetDevCaps(&tc, sizeof(TIMECAPS)) != TIMERR_NOERROR)
{
wxMessageBox(wxT("Error; application can't continue"));
}
wTimerRes = min(max(tc.wPeriodMin, TARGET_RESOLUTION), tc.wPeriodMax);
MMRESULT result= timeBeginPeriod(wTimerRes);
if(result==TIMERR_NOERROR )
wxMessageBox(wxString::Format(wxT("success:%d"),wTimerRes));
else if(result==TIMERR_NOCANDO)
wxMessageBox(wxT("set timer resoluion fail"));
else
wxMessageBox(wxT("set timer resoluion other"));
沒有留言:
張貼留言