タイマーコントロールについて


ハイライト  2004-03-30 04:35:55  No: 82755  IP: [192.*.*.*]

For i= 1 To 5
    (HTMLオブジェクトの操作)
Next

というプログラムなのですが、HTMLオブジェクトの操作のあとにタイマーコントロールを使い、1秒後に次の操作を行うとしています。が、そうなるとFor〜Nextが使えなくなってしまいます。
この場合どうしたらいいのでしょうか?

編集    削除
ねろ  2004-03-30 06:54:56  No: 82756  IP: [192.*.*.*]

同じような質問が続いているような。
この場合はTimerコントロールを使うと、
Timer1.Interval = 1000としておいて
Private Sub Timer1_Timer()
    Static count As Integer
    Timer1.Enabled = False
    count = count + 1
   '(HTMLオブジェクトの操作)
    If count < 5 Then
        Timer1.Enabled = True
    End If
End Sub
こんな方法で。
もちろんすぐ前に書いたwaitの方法もあります。

編集    削除
Say  2004-03-30 06:57:12  No: 82757  IP: [192.*.*.*]

処理時刻保持用の配列を用意して、
Forループ内の処理時にtimegetTimeあたりで値を代入しておき、
TimerではIntervalを小さめにしておき(95系で55、NT系で10ぐらい)、
イベントプロシージャ内で各要素の値とtimeGetTimeの値を比較し、
差が1000を超えたら「次の操作」をすればいいのでは?

編集    削除
まさ  2004-03-30 08:45:44  No: 82758  IP: [192.*.*.*]

timeGetTime(API)を使って、一秒間ループを繰り返すか、Sleep関数を使って一秒間ウェイトをかけるとかすればいいと思いますが…

編集    削除
ぴろあき  2004-03-30 19:53:09  No: 82759  IP: [192.*.*.*]

ループはCPUに負担をかける。
Sleep関数はその間の処理が遅れてしまう。
Timerイベントは精度が悪い。

で、Timerイベント内で、timeGetTimeの値と比較というのが、
定石になっているようですね。

私はマルチメディアタイマーを使用しています。
上記のような欠点が無い、イイ方法と思うのですが、
知名度が低いのはナゼ?

編集    削除