投稿日 | : 2004/03/15(Mon) 21:23 |
投稿者 | : ねろ |
Eメール | : |
URL | : |
タイトル | : Re^7: タイマー処理中にメニューバーをクリック |
プログラムを次のように書き換えて見ました
これで何もしなければ、0.5秒に一回ループを回るはず、
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Private Sub tmrUpdate_Timer()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim t As Long
Dim n As Long
tmrUpdate.Enabled = False
m_blnCancel = False
For i = 1 To 10
lblTime.Caption = "Count : " & CStr(i)
DoEvents
If m_blnCancel = True Then
Exit For
End If
t = timeGetTime
Do
DoEvents
Loop While (timeGetTime - t < 500)
'For j = 1 To 10000
'For k = 1 To 2000: Next k
'Next j
Next i
lblTime.Caption = ""
tmrUpdate.Enabled = True
End Sub
そして次のことを発見しました。
タイマーが始まる前又はタイマーとタイマーの間にメニューを選択すると、
メニューをプルダウンしてもタイマーはスターとしてループ表示は続行する、
ただしDoeventsを受け付けない。
タイマー処理中にメニューをプルダウンすると、処理が止まる。
これはしょうだいさんのオリジナルのコードでも同じです。
これはいったい何だろう、今夜は寝れなくなりそう。(^^;