Mouse_Moveイベントの頻度を減らすには?


たんとん  2005-11-30 17:17:50  No: 128403

Mouse_Moveイベント中でPaintPictureしているのですが、
Mouse_Moveイベントがあまりに何度も起こるせいで、プログラムの動作が
重くなってしまっています。
マウスの動きが速いときは、Mouse_Moveイベントが減るようにしたいのですが、
なにかいいアイディア、ヒントなどありませんでしょうか。


ガッ  2005-11-30 17:24:37  No: 128404

MouseMoveで描写処理をするのではなく、Timerの中で描写処理をするとか。


我龍院忠太  2005-11-30 19:11:49  No: 128405

Mouse_Moveイベントの中で最後に処理した時間を覚えていて
それがある一定時間内なら、処理をサボるとか。


ささ  2005-11-30 22:09:20  No: 128406

>処理をサボるとか。

Mousイベントの処理に何も記述しなくても、
イベント自体は発生するので、
イベント自体を抑制するのは難しいのでは?


我龍院忠太  2005-11-30 22:45:01  No: 128407

ささ さん
>Mousイベントの処理に何も記述しなくても、
>イベント自体は発生するので、
>イベント自体を抑制するのは難しいのでは?
おっしゃる通りです。
質問者たんとんさんの最終目的が、
>プログラムの動作が重くなってしまっています。
これを解決したいと仮定して書きました。
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _
    X As Single, Y As Single)
    Static timeBackTime As Long
    If timeGetTime - timeBackTime < 10 Then
        Exit Sub
    Else
        timeBackTime = timeGetTime
        'DoSomething
    End If
End Sub
これでマウスの動きが遅くならないことを確認しています。


ささ  2005-11-30 23:27:51  No: 128408

>我龍院忠太 さん

了解です、こちらでも動作確認しました。


たんとん  2005-12-01 08:58:10  No: 128409

みなさま

大変参考になりました。
自分なりにアレンジできそうなので、がんばってみます。
ありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加