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. |
検索キーワード及びサンプルコードの別名(機能名) |
コマンドボタン上でのリピート操作 コマンドボタンを押しっぱなし コマンドを長押し |