Mouse_Moveイベント中でPaintPictureしているのですが、
Mouse_Moveイベントがあまりに何度も起こるせいで、プログラムの動作が
重くなってしまっています。
マウスの動きが速いときは、Mouse_Moveイベントが減るようにしたいのですが、
なにかいいアイディア、ヒントなどありませんでしょうか。
MouseMoveで描写処理をするのではなく、Timerの中で描写処理をするとか。
Mouse_Moveイベントの中で最後に処理した時間を覚えていて
それがある一定時間内なら、処理をサボるとか。
>処理をサボるとか。
Mousイベントの処理に何も記述しなくても、
イベント自体は発生するので、
イベント自体を抑制するのは難しいのでは?
ささ さん
>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
これでマウスの動きが遅くならないことを確認しています。
>我龍院忠太 さん
了解です、こちらでも動作確認しました。
みなさま
大変参考になりました。
自分なりにアレンジできそうなので、がんばってみます。
ありがとうございました。
ツイート | ![]() |