5.コマンドボタンでダブルクリックイベントを取得する |
1.コマンドボタンでダブルクリックイベントを取得する 2. 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:MyWaitDll.DLL 参照設定方法参照 使用 API:GetDoubleClickTime その他 :このサンプルは、 Win32 APIを使用しておりますので、ある程度Win32 API が理解できる方がお使い下さい。 :
|
1.コマンドボタンでダブルクリックイベントを取得する |
Option Explicit 'SampleNo=274 2003.04.02 'マウスのダブルクリックの間隔を取得する(P1042) Private Declare Function GetDoubleClickTime Lib "user32" () As Long Private nClick As Integer 'マウスクリックのカウント用 Private Sub Command1_Click() 'ダブルクリックを感知する nClick = nClick + 1 'クリックの回数をカウントする 'どちらかの方法をご使用下さい。 If MyWaitDll を使用する場合 Then Wait GetDoubleClickTime Else Dim sngSt As Single 'マウスのダブルクリックの間隔を考慮(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 End If If nClick = 1 Then 'シングルクリックイベントの処理 MsgBox "シングルクリックです。" ElseIf nClick >= 2 Then ' = 2 でもいいかも 'ダブルクリックイベントの処理 MsgBox "ダブルクリックです。" End If nClick = 0 End Sub Private Sub Command2_Click() 'この PC のダブルクリックの間隔を取得 Debug.Print GetDoubleClickTime / 1000 '結果 0.55 秒 End Sub 注意、Timer は午前0時にリセットされる。 timeGetTime(MyWaitDll で使用) は約 49.71 日でリセットされる 従って上記条件で使用される場合は、考慮して下さい。 CommandButton 等ダブルクリックイベントの無いコントロールでダブルクリックイベントを取得する Microsoft Forms2.0のCommandButtonにはダブルクリックイベントがあるのですが使用するとボタンが凹んだままになったり、又再配布も出来ません。 ピクチャーボックスで作るという手もあるのですがボタンの画像を作ったりと結構面倒なのでお手軽な方法を考えて見ました。 |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
CommandButton でダブルクリックを取得する マウスのダブルクリックの間隔を取得する ダブルクリックイベント |