Last Updated 2005/05/18
Programming Tips Visual C++ API  索 引 
タイマーの精度
2005/05/18

SetTimer() などのタイマーは 55ms 単位でしか精度は出ない.
またメッセージを飛ばすだけなので,Dispatch が止まってしまう(ウィンドウのドラッ
グ中や時間のかかる処理など)とタイマーが機能しない.
(WM_TIMER は暇な時に発行されるものと認識しておく)

完全にバックグラウンドで動作させるならば SetSystemTimer() という未公開 API を使
用する.しかしこの割り込み中の中ではほとんどの API が使用できない.


そこでマルチメディアタイマー timeSetEvent() を使用する.


また,詳細な時間計測には
timeGetDevCaps() 高精度タイマの時間間隔の最小値を得る
timeBeginPeriod() 高精度タイマを初期化する
timeGetTime() システム起動からの時間(msec単位)を得る
timeEndPeriod() 高精度タイマの初期化をキャンセルする
などを使用する.


参照
timeSetEventの使い方
前後のTips
タイマーの精度

DSS ProgrammingTipsCGI Ver2.02