ここから本文です

fortunecity様、お助けください。。

psx********さん

2010/3/115:45:56

fortunecity様、お助けください。。

以前VB6.0について教えていただいたものです。
前回のVBのTimerでは精確な時間が計測されませんでした。なのでWINDOWSのTimer(timeGetTimeでしょうか??)を使用したいと思うのですが、無知なのでこの前のを書き換えてもうまく動作しません。。
申し訳ありませんが他に頼れる人がいないので、お願いできますでしょうか。
どうかよろしくお願いします。

補足ソースの記載という手があるんですね。
精確に5秒計りたいです。
お願いいたします。名指しに関しては、申し訳ありませんでした。

閲覧数:
304
回答数:
1
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

for********さん

編集あり2010/3/218:03:10

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1137183861
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1437210814
の続きですよね。
精度が必要な場合にtimeGetTimeを使うのは正しいですよ。

時間の計測との事ですが、正確に5秒測りたいのでしょうか?
それとも、キーが入力された時点までの時間でしょうか?

動かなくてもいいので、ソースを記載した方が回答しやすいです。
ソースを記載すれば名指しする必要もなくなると思いますし。

補足に対する回答です。

何回かテストしてみましたが、誤差は2ミリ秒~10ミリ秒程度でしたのでタイマーを使うよりは精度がいいと思います。

Private Declare Function timeGetTime Lib "winmm.dll" () As Long

Private Sub Form_Load()
'画面のレイアウト設定
With Me
.Move 100, 100, 2600, 2600
.KeyPreview = True
End With

With Picture1
.Move 0, 0, 1200, 1200
.AutoRedraw = True
End With

With Picture2
.Move 1200, 0, 1200, 1200
.AutoRedraw = True
End With

With Command1
.Move 1200, 1500
.Caption = "スタート"
End With
End Sub

Private Sub Command1_Click()
Dim i As Integer

Randomize

For i = 1 To 6
Debug.Print "START:" & timeGetTime
Call ShowCircle
Debug.Print "END :" & timeGetTime
Next i

Picture1.Cls
Picture2.Cls
End Sub

Private Sub ShowCircle()
Dim startTime As Long

startTime = timeGetTime
Picture1.Cls
Picture1.Circle (600, 600), 500, RGB(Rnd * 256, Rnd * 256, Rnd * 256)
Picture2.Cls
Picture2.Circle (600, 600), 500, RGB(Rnd * 256, Rnd * 256, Rnd * 256)

'5秒経過するまで待機
Do Until timeGetTime - startTime >= 5000
'Form_KeyDownイベントを発生させる為に必要
DoEvents
Loop
End Sub

名指しに関しては、他の回答者さんの意見をもらう機会が減って質問者さんにとって不利益かと思っただけです。

質問した人からのコメント

2010/3/3 04:01:37

降参 本当にありがとうございました。他の掲示板では全く相手にされなかったので、非常に助かりました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる