SKY外语计算机学习
标题:
VB_识别多按键同时按下
[打印本页]
作者:
fieldmax
时间:
2012-4-28 21:32
标题:
VB_识别多按键同时按下
本帖最后由 sky_yx 于 2015-12-30 14:22 编辑
[i]'[/i][i]*****************************************************************
'本函数用于识别多按键同时按下,最多支持同时按下128个按键
'编写时间:2005年6月10日,编写人:田野(Field MAX)
'
'函数用法:KeyClick([KeyDown][KeyUp])
'KeyDown 按下的KeyPass(可选)
'KeyUp 抬起的KeyPass(可选)
'
'使用方法:分别在KeyDown和KeyUp事件内使用本函数即可获得案件码。
' 获取案件码时可不输入附加值。
'
'*****************************************************************
Public AllKeyPass(127) As Integer
Public Function KeyClick(Optional ByVal KeyDown As Integer = 0, Optional ByVal KeyUp As Integer = 0) As String
Dim i As Long
Dim NewKeyPass As String
For i = 0 To 127
If KeyDown <> 0 And AllKeyPass(i) = KeyDown Then Exit Function
Next
For i = 0 To 127
If AllKeyPass(i) = 0 Then
AllKeyPass(i) = KeyDown
Exit For
End If
Next
For i = 0 To 127
If AllKeyPass(i) = KeyUp Then AllKeyPass(i) = 0
If AllKeyPass(i) <> 0 Then
NewKeyPass = NewKeyPass & AllKeyPass(i) & ","
End If
Next
If Len(NewKeyPass) = 0 Then
KeyClick = "0"
Else
KeyClick = Left(NewKeyPass, Len(NewKeyPass) - 1)
End If
End Function
----------------------------------------------------------------------
'演示
Private Sub Command1_Click()
Debug.Print KeyClick
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Debug.Print KeyClick(KeyCode)
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
Debug.Print KeyClick(, KeyCode)
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Debug.Print KeyClick(Button)
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Debug.Print KeyClick(, Button)
End Sub[/i]
复制代码
作者:
SKY定格
时间:
2012-5-15 14:07
本帖最后由 sky_yx 于 2015-12-30 14:22 编辑
很好很强大 我试试
作者:
SKY定格
时间:
2012-5-15 14:45
本帖最后由 sky_yx 于 2015-12-30 14:22 编辑
不懂不明白 求解 窗体上建立一个label 怎么控制他的上下左右
作者:
fieldmax
时间:
2012-5-15 17:23
本帖最后由 sky_yx 于 2015-12-30 14:22 编辑
把MouseDown事件的X、Y转化为公共变量,在MouseMove事件通过前面的X、Y进行差值运算就可以移动了
作者:
SKY定格
时间:
2012-5-16 18:16
本帖最后由 sky_yx 于 2015-12-30 14:22 编辑
田野老师 那个多键按下你这个代码 我实在搞不好 我照你以前说的写的代码识别多键按下的 其他的基本上都好的 就是还有点小小问题
我在窗体上建了个label 名字叫c1
按下多键时如果首先松开最后按下的那个键c1停止移动 如果先松开前面按的键则正常
如首先按上 再按右 如果先松开右 则停止移动(理想中应该继续向上移动) 如果先松开上则继续向右移动正常。
vb万分迷惑 求解
欢迎光临 SKY外语计算机学习 (http://skywj.com/)
Powered by Discuz! X2.5