vb判断按键被快速的按下了两次?
4个回答
展开全部
原理:判断2次按键的时间差。
但是由于系统提供的时间不支持到毫秒,所以用了API函数来读取。
Private Declare Sub GetLocalTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Const 时间间隔 As Long = 500 '毫秒
Dim TW As SYSTEMTIME
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Static 上次时间 As Long
Static 上次按键 As Integer
'读当前时间
Call GetLocalTime(TW)
'判断时差
If TW.wSecond * 1000& + TW.wMilliseconds - 上次时间 < 时间间隔 And KeyCode = 上次按键 Then
MsgBox "按了2下!!"
End If
上次时间 = TW.wSecond * 1000& + TW.wMilliseconds
上次按键 = KeyCode
End Sub
但是由于系统提供的时间不支持到毫秒,所以用了API函数来读取。
Private Declare Sub GetLocalTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Const 时间间隔 As Long = 500 '毫秒
Dim TW As SYSTEMTIME
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Static 上次时间 As Long
Static 上次按键 As Integer
'读当前时间
Call GetLocalTime(TW)
'判断时差
If TW.wSecond * 1000& + TW.wMilliseconds - 上次时间 < 时间间隔 And KeyCode = 上次按键 Then
MsgBox "按了2下!!"
End If
上次时间 = TW.wSecond * 1000& + TW.wMilliseconds
上次按键 = KeyCode
End Sub
展开全部
单击某按键后记录时间,如果在一定时间(比如500ms)内再次单击相同按键,则将两次单击的时间计算出,如果间隔时间小于500ms则判断为“双击”按键事件。 需要使用精确计时的api。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
double click()函数就可以识别是双击
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
smh1982 - 初级经理 七级——不错哦!学习啦!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询