ここのページにあるサンプルは秒単位でしかできませんが、
もっと細かくミリセカンド単位できないでしょうか。
FormにCommandButtonとLabelとTimerを1こずつおいてください。
Dim lngCount As Long
Private Sub Command1_Click()
Timer1.Interval = 100 '100ミリ秒
Label1.Caption = "スタート"
Label1.Refresh
Timer1.Enabled = True
lngCount = 0
Do While lngCount < 5
DoEvents
Loop
Label1.Caption = "エンド"
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
lngCount = lngCount + 1
End Sub
Timer1.Interval と lngCount < 5 をかきかえれば
ミリ秒単位で好きな時間ループできます。
Timerコントロールは周りの処理に影響されやすいので
より正確に処理を行うにはGetTickCount,
timeGetTime等のAPIを使うのが望ましいかと思います。
ところで、Getticktimeって、マルチメディアタイマーとして使えるでしょうか?
あ、でも、どこにいれるのかな…。
まあ、今カーソルのある行を得るとか、その程度の、
正確でなくてもいいものは、Timerで十分だと思いますよ。
ただ、2個3個とTimerを置くと、重いらしい…。
ちなみに、精度は
Timer 55ms
GetTickCount 5ms〜13ms
timeGetTime ほぼ正確
です。
確か、タイマーイベントで100msとすると、
100ms毎ではなく、Timerコントロールの
プロシージャーを抜けてから、100msだったという
話を聞いたことがあります。
だとすると、かなりいい加減なタイミングになります。。。
Getticktime?
なんか、混ざってますが・・・。
GetTickCountとimeGetTimeは
単にシステム起動時間?だっけそういうのを取得するだけです。
タイマーではありませんが・・・。
マルチメディアタイマーを使用するには
timeBeginPeriodとかtimeSetEventとかのAPIを使います。
ツイート | ![]() |