CommandButton でダブルクリック
                                                         玄関へお回り下さい。
CommandButton でダブルクリックを取得する                    (274)
Form に Command1 を貼り付けておいて下さい。
  Option Explicit   'SampleNo=274 WindowsXP VB6.0(SP5) 2003.04.02

'マウスのダブルクリックの間隔を取得する(P1042)
Private Declare Function GetDoubleClickTime Lib "user32" () As Long
Private nClick As Integer  'マウスクリックのカウント用

Private Sub Command1_Click()
'ダブルクリックを感知する
  Dim sngSt As Single
  nClick = nClick + 1
  'マウスのダブルクリックの間隔を考慮(0.18〜0.9)
  sngSt = Timer + GetDoubleClickTime / 1000
  If sngSt >= 86400 Then
    sngSt = sngSt - 86400
  End If
  '場合によっては待機時間を調整して下さい。
  'APIを使用しないなら0.18〜0.9秒の範囲で待機して下さい。
  Do While Timer < sngSt
    DoEvents
  Loop
  If nClick = 1 Then
    'シングルクリックイベントの処理
    MsgBox "シングルクリックです。"
  ElseIf nClick >= 2 Then   ' = 2 でもいいかも
    'シングルクリックイベントの処理
    'クリックイベントが発生してからダブルクリックイベントが発生するので
    '必要によってはここにもシングルクリックの処理を記入して下さい。
    MsgBox "シングルクリックです。"

    'ダブルクリックイベントの処理
    MsgBox "ダブルクリックです。"
  End If
  nClick = 0
End Sub

 
VBのCommandButton にはダブルクリックイベントがないので擬似的にシングルクリックと
ダブルクリックを分けて取得できるようにしました。通常ダブルクリックの間隔は0.18〜0.9秒
間で設定されています。APIを使用しないならその範囲内で設定して下さい。
Timer を使って時間を測定しておりますので 0時にリセットされます。真夜中にクリック
をされても問題ないように一応考慮はしていますが?。    



2003/04/20