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


α  2001-07-04 07:30:18  No: 74581  IP: [192.*.*.*]

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

編集 削除
Say  2001-07-04 11:03:33  No: 74582  IP: [192.*.*.*]

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-04 22:34:09  No: 74583  IP: [192.*.*.*]

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

編集 削除
たかみちえ  URL  2001-07-05 00:32:03  No: 74584  IP: [192.*.*.*]

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

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

編集 削除
Say  2001-07-05 09:30:15  No: 74585  IP: [192.*.*.*]

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

編集 削除
こころ  URL  2001-07-06 01:07:38  No: 74586  IP: [192.*.*.*]

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

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

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

編集 削除