2009-12-30 117 views
1

在我的VB6程序中,我有大量的热键,如X,A,D ...等。我还有一个聊天系统,每当我使用X或A字符时,它都会执行这些热键的操作。例如,如果X要关闭应用程序(并非真的如此),那么当我在聊天文本框中输入“fiXing”时,它将关闭应用程序。任何人都可以告诉我如何禁用热键时键入输入键除外?键入时禁用HotKeys - VB6

感谢,

凯文

+0

让我们备份一下。你听起来好像你有热键已经工作,只是想在输入文本框的时候抑制它们的功能。你有他们工作吗?你能否将相关的代码添加到你的问题中,以便我们更好地理解问题? – raven 2009-12-30 22:42:38

+0

好吧,我有一吨-_-。像所有F1 F2 ...等按键一样,还有一些输入,x,shift ...键。这些都是在我创建的游戏中实现的。 – lab12 2009-12-31 04:08:25

回答

1

在聊天TextBoxGotFocus事件设置一个标志,禁用热键。然后在TextBoxLostFocus事件中重新启用它们。

我不知道你的热键,但代码来设置标志如何陷阱很简单:

Private suppressHotkeys As Boolean 

Private Sub txtChat_GotFocus() 
    suppressHotkeys = True 
End Sub 

Private Sub txtChat_LostFocus() 
    suppressHotkeys = False 
End Sub 

然后在捕捉热键的代码,只检查标志:

If (Not suppressHotkeys) Then 
    //process hotkey 
End If 
+0

你知道代码的样子吗? – lab12 2009-12-30 17:15:32

+0

好吧..我仍然对刚刚发布的代码感到困惑......:/。我不明白..在If语句中,我是否在代码中放入了热键? – lab12 2009-12-30 20:51:28

0

它可能会更好地使用您的热键的组合键。按说比较常见的是Ctrl + XAlt + X。您可以在KeyDown或KeyUp事件中测试它们。

If KeyCode = vbKeyX And (Shift And vbCtrlMask = vbCtrlMask) Then 
    ' Do something 
End If