タイトル | : Command長押しプログラムー応用編ー |
記事No | : 13223 |
投稿日 | : 2008/11/11(Tue) 21:30 |
投稿者 | : 翔さん |
前回8月ごろにこのサイトでCommandを長押しすることで別の処理が出来ることを 教えてもらった翔さんです。 前回教えてもらったプログラムで9月10月休憩していたものの現在作業が順調に進んでいます。 ところが、問題が発生してしまいました。 Command1を長押ししてCommand2へ行くことは可能なのですが、そこから Command1へ長押しをして戻すことが出来ないのです。 この長押しプログラムは2回使うにはCommand番号を変える以外になにかしないといけないのでしょうか? ちなみに前回のプログラムはこんな感じです。 Option Explicit
Private Declare Function timeGetTime Lib "winmm.dll" () As Long Private FrgMouseDown As Boolean
Private Sub Command1_MouseDown(Button As Integer, _ Shift As Integer, X As Single, Y As Single) FrgMouseDown = True '1.5秒以上押し続けた場合処理を1回実行する(時間はお好みで) Call GetKeepsPushing(1500, False) '1.5秒以上押し続けた場合処理を何回も繰り返す 'Call GetKeepsPushing(1500, True) End Sub
Private Sub Command1_MouseUp(Button As Integer, _ Shift As Integer, X As Single, Y As Single) FrgMouseDown = False ' Me.Cls End Sub
Private Sub GetKeepsPushing(ByVal pt As Long, ByVal rp As Boolean) Dim st As Long '約 49.71 日以上連続稼働しているPCは注意して下さい。 st = timeGetTime 'ボタンが押された時の時間 Do While FrgMouseDown 'True の間押されている時間を測定 DoEvents '指定の時間以上押されていたら処理を抜ける If timeGetTime - st > pt Then Exit Do Loop '押されていた時間が指定の時間以内の場合何もしない If timeGetTime - st < pt Then Exit Sub '----------------------------------------------------------------------- 'ボタンが押し続けられた場合の処理 Print "Command ボタンが1.5秒以上押されました。" '----------------------------------------------------------------------- If rp = False Then '1回だけ実行する場合 FrgMouseDown = False Else 'リピート操作が必要な場合(押している間何回も処理を実行する) Call GetKeepsPushing(200, True) End If End Sub
お返事よろしくお願いします。
|