tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルCommand長押しプログラムー応用編ー
記事No13223
投稿日: 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

お返事よろしくお願いします。

[ツリー表示へ]
タイトルRe: Command長押しプログラムー応用編ー
記事No13244
投稿日: 2008/11/15(Sat) 11:02
投稿者翔さん
変数名もすべてだぶらないようにしたらちゃんと動きました。
ご迷惑をかけましたが、あるがとうございます。

[ツリー表示へ]