投稿日 | : 2006/05/25(Thu) 01:22 |
投稿者 | : も |
Eメール | : |
URL | : |
タイトル | : Re: イベント発生時の割り込み規制について |
> 環境 WinXP-SP2 VB6.0-SP5
>
>
> 処理に3秒程度掛かるプロシージャ(たとえば検索処理プログラム)処理中に、
> コマンドボタン等のイベントが発生した場合、
> イベントの処理をおこなって、もとにプロシージャに戻ると思いますが、
> このとき、元のプロシージャで”Dim”で宣言された変数は、値がクリアされてしまいますよね?
つまり、以下のようなことですか?
hogeを呼び出し中にイベントの処理を行っても、
hogeのローカル変数の値がクリアされているように見えませんが…?
(もしかして、再起呼び出しになっている…?)
Option Explicit
Private WithEvents cmd As CommandButton
Private Sub Form_Load()
Set cmd = Me.Controls.Add("VB.CommandButton", "cmd")
With cmd
.Caption = "テスト"
.Move 0, 0, 1000, 1000
.Visible = True
End With
Me.Show
Call hoge
End Sub
Private Sub cmd_Click()
'イベント
MsgBox "コマンドボタンが押されました" '←何か処理をする
End Sub
Private Sub hoge()
'長い処理
Dim local_i As Long
Do
Me.Caption = local_i
local_i = local_i + 1
DoEvents
Loop
End Sub
Private Sub Form_Unload(Cancel As Integer)
'アンロード
Unload Me
End Sub