do〜loop内にdoeventsを入れて、処理中にもほかの処理を出来るようにしているのですが、
doeventsでループするのは、PCの時間が遅れたりするなど弊害が発生するとどこかのMLで昔見た記憶がありました。
ループ内でほかのルーチンの戻り値が発生するのを待つのに、doeventsを使わないほかの良い方法をご存知でしたら、
どなたか教えてください。
環境 WinXP Pro /Win2000 VB6全パッチ適用済み
タイマ監視するとか、メッセージ拾うとか・・・。
ま、たとえば隠しTextBoxを1つ用意して、
「ほかのルーチン」は終了時にそこに何かかきこんで、
終了後の処理をChangeイベントプロシージャに書くとか。
DoEventsを使わないプログラムは私には考えられない。
たとえばあるテキストボックスに8桁のパスワードを
入れなければ次に進まないプログラムの場合
Do
DoEvents
Loop Until Len(Text1.Text) >= 8
こんなコードになるのですが、これを他の方法でやろうとすると
結構大変です。
やってはいけないのは、たとえばListBoxに大量のデーターを
書き込もうとして
For n = 0 To 10000
List1.AddItem CStr(n)
DoEvents
Next
なんてやると一個挿入するたびに、WindowsはListBoxに描画しようとするから
時間が掛かる、こう言うときは
For n = 0 To 10000
List1.AddItem CStr(n)
If (n Mod 100) = 0 Then
DoEvents
End If
Next
なんてやってDoEventsの回数を100回挿入したら一回行う様なことをします。
要するに'ハサミ'と一緒と言うことですか。