投稿日 | : 2007/03/21(Wed) 13:41 |
投稿者 | : るしぇ |
Eメール | : |
URL | : |
タイトル | : Re^3: 花ちゃんに補足 |
差し出がましいようですが、せっかく書いたので投稿させてください。m(__)m
>実際、使われ方としては、どちらがよいのでしょうか。
>ただ、「Doevents」を追加すると、他のボタン操作やイベントが実行
>できてしまいます。
そこまで自分で調べたなら、それが起こるとまずい状況では DoEvents が
使えないという判断ができるはずでは???
今回の場合、プログラムの実行中には、OSが常時行っている再描画処理
が走らないというのが原因です。
OSに制御を戻す必要があるなら DoEvents
再描画だけなら Refresh を使った方が良いと思います。
DoEvents が原因で予期せぬ動作が起こって『原因が分からない』と
質問する人は少なくないです。
>処理中(ループ中)は、ボタンなどを押下できないようにしてしまえば
>問題ないです。
といった対策も必要ないわけですし。
当然のことなんですが、プログラムにはそれぞれ意味があり、
目的・状況に応じて使い分けます。
例えば、
DoEvents とセットで使われる事が多いのが Sleep 関数ですが、
このサイトの解説でもちゃんと注意書きがあります。
http://hanatyan.sakura.ne.jp/vbhlp/sonota_API.htm
>但し、関数の機能等をよく調べ使用しないと動作が不安定になったりします。
>上記の例でも解るようにSleep関数を使って待ち時間を作るとその間は、
>他のイベントを受け付けなくなる等の不都合がでます。VBの機能でも工夫
>すれば便利に使えます。
言語によって使い方を考えた方が良い状況もあります。
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200606/06060002.txt
どちらにしろヘルプなどを読めば、そこに違う処理内容が書いてあるでしょう。
>実際、使われ方としては、どちらがよいのでしょうか。
はなから違うものを条件なしに比べることはできません。
目的・状況にあった方を、正しい使い方で使うのが良いのでは?