一段聊天程序中参数shift作用是啥?

来源:百度知道 编辑:UC知道 时间:2024/05/29 13:34:35
下面是一个聊天程序的一部分:
Private Sub txtMsg_KeyDown(KeyCode As Integer, Shift As Integer)
Dim sendKey As Byte
For i = 0 To 2
If opSend(i) Then
sendKey = 2 ^ i
End If
Next
'按下Ctr + Enter处理发送消息
If KeyCode = 13 And Shift = sendKey Then
'如果用户没有输入任何消息,则不加处理
If txtMsg.Text = vbNullString Then
Exit Sub
End If
txtall = txtall & vbCrLf & String(16, "-") & vbCrLf
txtall.Text = txtall.Text & sckChat.LocalHostName & Time() & vbCrLf & txtMsg.Text
'发送消息并清空底部文本框的内容
sendMsg txtMsg.Text
txtMsg.Text = vbNullString
End If
End Sub

我的问题是1、既然For i = 0 To 2 ,而sendKey = 2 ^ i ,那么sendKey只有1 2 4这三个值。sendkey是表示啥呢?如果表示某个键的代码,没有什么键的代码是 1 2 4
2、看到下面的窗体附图上显示的意思好像是enter分别与shift ctr alt这几个键组合,但这几个键的代码分别是13 18 16 17 。这跟sendkey的三个值完全没有关系。所以,sendkey和shift的作用感觉很迷惑。

sendkey这里是变量,不是那个sengkeys函数,这里的赋值用于后面shift参数的值
shift=0 ‘SHIFT、Ctrl、alt没按下
shift=1 'SHIFTR按下
shift=2 ‘Ctrl没按
shift=4 'alt按下

仔细看这句 '按下Ctr + Enter处理发送消息
If KeyCode = 13 And Shift = sendKey Then

这里就是判断Shift的状态,这句的意思是假如按下回车和另一个sendKey变量值的时候的情况,sengkey的情况前面说了

For i = 0 To 2
If opSend(i) Then
sendKey = 2 ^ i
End If
Next

至于这段,其实可以由shift的值看出来,
shift=0 ‘SHIFT、Ctrl、alt没按下
shift=1 'SHIFTR按下
shift=2 ‘Ctrl没按
shift=4 'alt按下
那么就很明显了。。。shift的值都是2的n次方