VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 コマンドボタン関係のメニュー
1.Command ボタンに関するワンポイントテクニック集
2.Command1.Caption 等に左揃え・右揃えで文字を表示
3.Win32 API を使っての Command ボタンの Caption の Alignment を設定
4.コマンドボタンの装飾(ForeColor / フォント色の設定他)
5. コマンドボタンでダブルクリックイベントを取得する
6.コマンドボタン上でのリピート操作を実装する
7.キーボードフックによるコマンドボタン上での検出できないキーの監視
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.その他、当サイト内に掲載しているコマンドボタンに関するサンプル


6.コマンドボタン上でのリピート操作を実装する
1.コマンドボタン上でのリピート操作を実装する
2. 
3. 
4. 
5. 
6. 

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6)
Option :[Option Explicit]
参照設定:
使用 API:timeGetTime
その他 :このサンプルは、 Win32 APIを使用しておりますので、ある程度Win32 API が理解できる方がお使い下さい。
    :
このページのトップへ移動します。 1.コマンドボタン上でのリピート操作を実装する
Option Explicit   'SampleNo:522  2008.08.10   @ 2008.08.10

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)
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 Command2_MouseDown(Button As Integer, _
           Shift As Integer, X As Single, Y As Single)
  FrgMouseDown = True

  '1.5秒以上押し続けた場合処理を何回も繰り返す(リピート処理)
  Call GetKeepsPushing(1500, True)
End Sub

Private Sub Command2_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

掲示板の質問 コマンドを長押しすると別の処理.. - 翔さん 08/08/09-20:58 No.12871 に答えて作ったものです。
詳しくは、一連のスレッドをご覧下さい。

このページのトップへ移動します。 2. 



このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
コマンドボタン上でのリピート操作 コマンドボタンを押しっぱなし コマンドを長押し



このページのトップへ移動します。