Escape成为Ctrl-Z - 但为什么?

时间:2012-03-09 00:45:59

标签: vb6

我目前正在维护一个VB6应用程序,但对VB6知之甚少。 我遇到了一些令我困惑的代码。

Private Sub Form_KeyPress(KeyAscii As Integer)
  KeyAscii = Asc(UCase(Chr(KeyAscii)))
  If KeyAscii = 27 And TypeOf Me.ActiveControl Is TextBox Then
      KeyAscii = 0
      SendKeys "^Z"
  End If
End Sub

以下是我所知道的:当按下退出按钮时,代码正在调用 Ctrl + Z 的按键。 这是我不知道的:为什么?我在点击转义后进行了调试,除了正在运行的if语句的内容之外,它没有做太多我可以做的事情(除了光标的短暂显示)。

有谁知道这个的重要性?即发送 Ctrl + Z 按键组合。

3 个答案:

答案 0 :(得分:4)

Ctrl + Z 是基于DOS的系统的文件结束字符,与(通常是可配置的) Ctrl 不同在类UNIX系统中+ D

但是,我认为在这种情况下更有可能是撤消命令,因为它发生在文本框中。

这是我的第一个猜测,您需要发送该击键以恢复您所做的任何更改。

测试该理论的一种方法是在文本框中进行更改,然后执行 Ctrl + Z 以查看是否还原。

当然,给定的应用程序可以以任何合适的方式自由解释击键。您应该查看代码以查看 Ctrl + Z 的意图。

答案 1 :(得分:2)

Ctrl + Z 击键将以键盘焦点传递给控件。某些控件对撤消最近编辑的支持有限:特别是文本框。

因此,将非标准密钥( Esc )与撤消最新编辑的操作相关联可能是一种快速而又脏的方法。您将无法在VB6代码中找到更多关键按键的源代码,因为按键实际上是由Windows控件处理的。

答案 2 :(得分:1)

您的问题已脱离应用程序的上下文,因此无法确定答案,但是,从历史角度来看, Ctrl + Z 是{{1文件结束标记(ASCIIEOF)和数字设备公司,DOS世界过去常用于escape(ASCII 26ESC),现在常用。也就是说,为了摆脱这种情况,用户习惯输入 Ctrl + Z 而不是敲击转义键。

我怀疑这是一个剩余的兼容性代码。