アイドルイベントの実装
Delphiをちょこっと勉強しみて思ったことなんですが... DelphiではVbでは不可能なアイドルイベントを取得することができます。 ( Application.OnIdle に任意の関数を割り付けることにより実現します ) *アイドルイベントとは... 自分のアプリケーションに処理しなければいけないメッセージが 1件もないことを示します。 Vbで実現しようとしてタイマーのインターバルをいくら小さくしても マシンの性能に依存するようで私のマシンでも Interval = 10 にしても 50ms ぐらいの インターバルしか取得できません。 bLoop = True Do DoEvents Loop Until bLoop = False このようなループ処理でいけるかなー?とも思ったのですが... このループ処理を含むプロシージャをコールしたプロシージャは bLoop が False に ならない限り制御は戻ってきません。 PeekMessage() API で自分のアプリケーションにメッセージがないかを調べ処理するメッセージがない時が アイドルが発生したと判断すればアイドルイベントを実装することができます。 サンプルを作って見ました、興味のあるかたはここよりダウンロードしご自分のマシンで試して見て下さい。 どなたか、他に「もっといい方法があるよ!」というTipsをお持ちでしたら是非お知らせ下さい。 お待ちしております。 |
動作確認
Window98 Second Edition + Visual Basic 6 (+SP4)このサンプルを使用しての感想や、質問は 掲示板や、 らくがき帳に書きとめて頂けるとうれしいです。