投稿日 | : 2004/03/15(Mon) 09:45 |
投稿者 | : しょうだい |
Eメール | : |
URL | : |
タイトル | : Re^4: タイマー処理中にメニューバーをクリック |
アドバイスありがとうございます。
> >実際のプログラムでは、DoEventsの実行は数回なんですが
> この意味が今ひとつ理解できません。
すみません、具体例が適切ではなかったかもしれません。
少々変更させて頂きます。
以下のソースのタイマー処理中(ラベルのカウント表示中)に
メニューバーの「ファイル」をクリックし、サブメニューを
表示させた状態の時にタイマー処理が中断してしまいます。
(ラベルのカウント表示が更新されません。)
(具体例)
・フォームにラベルとボタンとタイマーコントロールを配置。
・メニューバーに「ファイル」及びそのサブメニューに「閉じる」を設定。
Private m_blnCancel As Boolean
Private Sub cmdCancel_Click()
m_blnCancel = True
End Sub
Private Sub Form_Load()
m_blnCancel = False
tmrUpdate.Interval = 5000
tmrUpdate.Enabled = True
End Sub
Private Sub tmrUpdate_Timer()
Dim i As Integer
Dim j As Integer
Dim k As Integer
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
For j = 1 To 10000
For k = 1 To 2000: Next k
Next j
Next i
lblTime.Caption = ""
tmrUpdate.Enabled = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
(開発環境)
Visual Basic 6.0 (SP5)
OS : Windows2000 Professional (SP4)
CPU: Celeron 1.70GHz