ミリセカンド単位で処理停止をするには?


α  2001-07-04 16:30:18  No: 74581

ここのページにあるサンプルは秒単位でしかできませんが、
もっと細かくミリセカンド単位できないでしょうか。


Say  2001-07-04 20:03:33  No: 74582

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 をかきかえれば
ミリ秒単位で好きな時間ループできます。


こころ  URL  2001-07-05 07:34:09  No: 74583

Timerコントロールは周りの処理に影響されやすいので
より正確に処理を行うにはGetTickCount,
timeGetTime等のAPIを使うのが望ましいかと思います。


たかみちえ  URL  2001-07-05 09:32:03  No: 74584

ところで、Getticktimeって、マルチメディアタイマーとして使えるでしょうか?
あ、でも、どこにいれるのかな…。

  まあ、今カーソルのある行を得るとか、その程度の、
正確でなくてもいいものは、Timerで十分だと思いますよ。
ただ、2個3個とTimerを置くと、重いらしい…。


Say  2001-07-05 18:30:15  No: 74585

ちなみに、精度は
Timer          55ms
GetTickCount   5ms〜13ms
timeGetTime    ほぼ正確
です。


こころ  URL  2001-07-06 10:07:38  No: 74586

確か、タイマーイベントで100msとすると、
100ms毎ではなく、Timerコントロールの
プロシージャーを抜けてから、100msだったという
話を聞いたことがあります。
だとすると、かなりいい加減なタイミングになります。。。

Getticktime?
なんか、混ざってますが・・・。
GetTickCountとimeGetTimeは
単にシステム起動時間?だっけそういうのを取得するだけです。
タイマーではありませんが・・・。

マルチメディアタイマーを使用するには
timeBeginPeriodとかtimeSetEventとかのAPIを使います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加