Побег становится Ctrl-Z - но почему? - PullRequest
3 голосов
/ 09 марта 2012

В настоящее время я поддерживаю приложение 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 ]

4 голосов
/ 09 марта 2012

A Ctrl + Z - это символ конца файла для систем на основе DOS в отличие от (обычно, хотя и настраиваемого) Ctrl + D в UNIX-подобных системах.

Однако я думаю, что в этом случае более вероятно, что это будет команда отмены, учитывая, что это происходит в текстовом поле.

Это было быМое первое предположение, что вам нужно отправить это нажатие клавиши, чтобы отменить любые сделанные вами изменения.

Один из способов проверить эту теорию - это внести изменения в текстовое поле, а затем выполнить Ctrl *.1016 * + Z , чтобы увидеть, не возвращается ли оно.

Конечно, данное приложение может интерпретировать нажатие клавиши любым удобным для него способом.Вам, вероятно, следует заглянуть в код, чтобы увидеть, что Ctrl + Z предназначается для этого.

2 голосов
/ 09 марта 2012

Клавиша Ctrl + Z будет передана на элемент управления с фокусировкой клавиатуры.Некоторые элементы управления имеют ограниченную поддержку для отмены последних изменений: в частности, текстовое поле.

Так что это, вероятно, быстрый и грязный способ связать нестандартный ключ ( Esc ) с действиемотменить последнее редактирование.Вы не найдете больше исходного кода для нажатия клавиш в коде VB6, потому что нажатие клавиш фактически обрабатывается элементами управления Windows.

1 голос
/ 09 марта 2012

Ваш вопрос находится вне контекста приложения, поэтому нет точного ответа, однако, с исторической точки зрения, Ctrl + Z является концом ASCIIмаркер файла (EOF, ASCII 26) и в Digital Equipment Corp., а также в мире DOS, который использовался там, где обычно используется escape (ESC, ASCII 27).То есть, чтобы выйти из ситуации, пользователи обычно набирали Ctrl + Z , а не нажимали клавишу escape.

Я подозреваю, что это оставшийся кусок кода совместимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...