Обнаружение правой клавиши Shift в событии KeyUp формы - PullRequest
0 голосов
/ 24 декабря 2011

Я хочу определить, когда правая клавиша Shift отпускается в форме в VB6.У меня есть следующий код:

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
    If GetKeyState(VK_RSHIFT) < 0 Then
        MsgBox "Right Shift Released"
    End If
End Sub

Кроме того, он не работает.К тому времени, когда событие сработало, ключ был освобожден, и функция API GetKeyState возвращает 0.

Какое решение?

1 Ответ

1 голос
/ 28 декабря 2011

Параметр Shift указывает, какая комбинация клавиш Shift , Ctrl и Alt не работает.Тем не менее, он не различает левый и правый.Для этого вам необходимо использовать функцию API GetKeyState.

Перехватывать правую клавишу Shift, когда она нажимает код, аналогичный тому, который у вас есть, но в событии Form_KeyDown.Установите логическое значение уровня модуля, чтобы указать, что ключ теперь не работает.(Обратите внимание, что вам нужно проверить, что KeyCode равно 16, что вы получите для любой клавиши Shift.)

Затем в событии Form_KeyUp, если ваш логический элемент говорит, что ключ не работает, но GetKeyState возвращает отрицательное число, указывающее, что оно действительно работает, вы знаете, что ключ был отпущен.Также убедитесь, что вы сбрасываете логическое значение уровня формы.

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